質問

Callable または Runnable を処理できる汎用非同期Javaジョブ実行フレームワークを探しています。これは java.util.concurrent.ExecutorService に似ていますが(場合によっては ExecutorService をラップします)、次の機能も備えています。

  1. ジョブの処理中にアプリケーションがダウンした場合にデータベースにジョブを保持し、未完了のジョブを再開できる機能。 (私の仕事では Serializable を実装する必要があるかもしれないことを理解しています。これは問題ありません。)

  2. UUIDを使用して、クライアントがジョブトークンを取得し、ジョブのステータスを照会できるようにします。 (内部では、この情報はデータベースにも保持されます。)

ExecutorService を中心に構築することで、この作業を自分で始めましたが、独創的なオープンソースソリューションがあればそれを希望します。

Spring Framework内で機能するものが理想的です。

役に立ちましたか?

解決

クォーツを使用して、具体的な Runnable に委任する Job アダプターまたは Callable 。 Quartzの Job インターフェースは、タスクの呼び出し間で状態を維持する機能を追加します。必要に応じて、Quartzはジョブとその状態をリレーショナルデータベースに永続的に保存し、ホストのスケーラブルなクラスターで実行できます。

他のヒント

クォーツをご覧ください。

  

Quartzはフル機能のオープンソースジョブスケジューリングシステムであり、最小のスタンドアロンアプリケーションから最大のeコマースシステムに至るまで、ほぼすべてのJ2EEまたはJ2SEアプリケーションと統合、または一緒に使用できます。 Quartzを使用して、数万、数百、数万のジョブを実行するための単純または複雑なスケジュールを作成できます。タスクが標準JavaコンポーネントまたはEJBとして定義されているジョブ。 Quartz Schedulerには、JTAトランザクションやクラスタリングなどのエンタープライズクラスの機能が多数含まれています。

http://www.opensymphony.com/quartz/wikidocsをご覧ください/Features.html にアクセスして、既に何かのものがあるかどうかを確認します。

そのページから:

  

付属のJDBCJobStoreを使用すると、すべてのジョブとトリガーが「不揮発性」として設定されます。 JDBCを介してリレーショナルデータベースに保存されます

別の方向としては、 Terracotta を使用するなど、JVMでヒープをクラスター化して永続化する機能があります。可用性。 Terracottaは、 Quartz との統合をサポートします(スケジュールの観点から有用な場合)。 。また、マスターワーカーとメッセージング統合モジュールがあります。同様に有用であること。 Terracottaはオープンソースです。

Alexのポイントをフォローアップするために、Terracottaソリューションはデータベースにジョブを永続化せず、Terracottaの分散メモリストアに永続化されます。

Terracottaはメモリストアをディスクに永続化するため、これらのジョブをデータベースに入れるより効率的なバージョンです。

同時に、純粋なPOJOプログラミングモデルを提供するため、DB txns、ORMなどに対処する必要さえありません-特定のワークロードがDBと通信しない限り(この場合、Terracottaここであなたを助けたり傷つけたりすることはありません。ただ作品を配布するのに役立ちます。

MasterWorkerパターンは、グリッド上で作業を分散するのに役立ちます。DistributedExecutorServiceを使用すると、作業を次のように簡単に開始できます。

CompletionService executor = new DistributedCompletionService(new DistributedExecutorService("myTopologyName"));
executor.submit(new MyRunnable(), null);
...
Future f = executor.take();

マスターワーカーのクイックスタートガイドへのリンクTerracotta Forgeでの実装

さらに-TerracottaではSerializableを実装する必要はありません-必要に応じて可能です:

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top