我正在寻找Java环境下类似于Celery项目的替代方案,我已经看过了Spring Batch,但是否有更好的分布式任务队列的选择呢?
谢谢。
我正在寻找Java环境下类似于Celery项目的替代方案,我已经看过了Spring Batch,但是否有更好的分布式任务队列的选择呢?
谢谢。
过去,Quartz对我非常有用。现在它已经与Terracotta集成,因此分发应该很容易。http://quartz-scheduler.org/
我发现Java世界中的JobRunr与Python世界中的Celery非常相似。这是一个用于Java后台处理的库,分布式部署,并采用持久化存储。
从他们的文档中可以看出:
使用Java 8 lambda表达式在Java应用程序内执行快速和延迟的、定时的和周期性的Job非常容易。支持CPU和I/O密集型、长时间和短时间的任务。数据持久化可以通过RDBMS(例如Postgres、MariaDB/MySQL、Oracle、SQL Server、DB2和SQLite)或NoSQL(ElasticSearch、MongoDB和Redis)来完成。
我找到的最接近的东西是Octobot: https://github.com/cscotta/Octobot,但是文档不是很多...以前有一个octobot.taco.cat的网站,但是我最近没有看到它加载。我个人没有使用过Octobot,但我经常看到它被推荐作为Java的Celery。
我一直没有找到在Java中使用起来像Celery一样容易的东西。大多数解决方案建议使用消息队列,但Celery比队列抽象层次更高。你可以从任务、工作人员、结果、重试等角度思考,而不是消息和消费者。
我还需要实现一些桥接器,为同时使用Java和Python的公司编写代码,于是我启动了这个项目:
celery-java - Java版的Celery客户端和工作程序,与它们的Python版本兼容。
注意,目前它还非常不成熟。
Apache ActiveMQ http://activemq.apache.org/
Apache Kafka http://kafka.apache.org/
Apache ActiveMQ是一个流行的开源消息代理,它支持多种协议和编程语言。它提供了可靠的异步通信机制,使得分布式系统之间的通信变得更加容易。
Apache Kafka是另一个流行的开源消息代理,它专注于高吞吐量和低延迟的数据传输。它被广泛用于大规模数据处理和实时流处理应用程序。