簡體   English   中英

什么是 Python 的 Celery 項目的 Java 等價物?

[英]What's the equivalent of Python's Celery project for Java?

我正在嘗試為 Java 環境找到一個與 Celery 項目等效的項目,我已經查看了 Spring Batch,但是對於分布式任務隊列有沒有更好的選擇。

謝謝。

Celery 所做的非常類似於EIP和具有方便任務調度的SEDA ...(您要做的就是添加一些數據庫和異步 HTTP 網絡,並且您擁有完整的企業級質量堆棧)。

在 Java 中基本上有 Spring 方式、Java EE 方式和 Hadoop 方式:

  • Spring: Spring 集成 + Spring Batch + RabbitMQ
  • Java EE: Mule + Quartz 或 EJB 調度 + HornetMQ
  • Hadoop: 容量+ ZooKeeper

這些大致按易於設置的順序排列。

Jesque ( https://github.com/gresrun/jesque ) 是一個 Java 分布式任務隊列庫。 它是 Resque 庫 ( https://github.com/defunkt/resque ) 的 Java 端口,在其 GitHub 頁面上是這樣描述的:

Resque(讀作“rescue”)是一個由 Redis 支持的庫,用於創建后台作業、將這些作業放置在多個隊列中並稍后處理它們。”

Quartz 過去曾為我工作過。 它現在與 Terracotta 集成,所以應該很容易分發。 http://quartz-scheduler.org/

Celery 主要基於 Erlang/RabbitMQ。 RabbitMQ 有一個可能有用的Java 客戶端庫 此外,還有一個具有 RabbitMQ 后端的octobot

分布式 Java 任務調度和執行https://redisson.org/

我發現的最接近的東西是 Octobot: https ://github.com/cscotta/Octobot 雖然沒有那么多文檔......曾經在 octobot.taco.cat 有一個網站,但我還沒有看到最近的負載。 我沒有親自使用過 Octobot,但我經常看到它被推薦為 Java 的 Celery。

我還沒有找到像 Celery for Java 這樣容易使用的東西。 大多數解決方案建議使用消息隊列。 但是 Celery 的抽象層次比隊列高一級。 您可以考慮任務和工作人員、結果、重試等,而不是消息和消費者。

我還需要為一家同時使用 Java 和 Python 的公司實現一些橋梁,所以我開始了這個項目:

celery-java -Java中的 Celery 客戶端和工作者,與 Python 對應物兼容。

請注意,它現在還很不成熟。

我發現 Java 世界中的JobRunr與 Python 世界中的 Celery 非常相似。 它是一個用於 Java 后台處理的庫,本質上是分布式的,並由持久存儲支持。

從他們的文檔中,

僅使用 Java 8 lambda 在 Java 應用程序中執行即發即棄、延遲、計划和重復作業的極其簡單的方法。 支持 CPU 和 I/O 密集型、長時間運行和短期運行的作業。 持久存儲通過 RDBMS(例如 Postgres、MariaDB/MySQL、Oracle、SQL Server、DB2 和 SQLite)或 NoSQL(ElasticSearch、MongoDB 和 Redis)完成。

Apache ActiveMQ http://activemq.apache.org/

阿帕奇卡夫卡http://kafka.apache.org/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM