2009-03-04 21 views
5

CallableまたはRunnableを処理できる汎用非同期Javaジョブ実行フレームワークを探しています。それは、java.util.concurrent.ExecutorServiceに似て(そしておそらくExecutorServiceをラップ)が、それは次のような機能も持っていますでしょう:ジョブがサービスを受けている間、アプリケーションがダウンした場合に、データベースにジョブを永続化する汎用非同期Javaジョブ実行フレームワーク/ライブラリの検索

  1. 能力を完了していないジョブを再開できるようにします。 (私の仕事は、Serializableを実行しなければならないかもしれないことを理解しています。)

  2. クライアントがジョブトークンを取得し、ジョブのステータスを問い合わせるためにUUIDを使用します。 (フードの下では、この情報は同様に、データベースに永続化されます。)

、私はExecutorService周りを構築することにより、これに自分自身を作業を開始しているが、私は箱の外を好むだろう、オープンソースソリューションもし存在すれば。

Spring Framework内で動作するものは理想的でしょう。

答えて

3

あなたはQuartzを使用し、RunnableまたはCallableにその代表者の具体的なJobアダプタを作成することができます。 Quartz 'Jobインターフェイスは、タスクの起動間にある状態を維持する機能を追加します。必要に応じて、Quartzはジョブとその状態をリレーショナルデータベースに永続的に保存し、それらをスケーラブルなホストクラスタで実行することができます。

8

Quartzをご覧ください。最小のスタンドアロンアプリケーションから最大の電子商取引システムに -

クォーツと統合、または側面に沿って事実上すべてのJ2EEまたはJ2SEアプリケーションを使用することができますフル機能を備えた、オープンソースのジョブスケジューリングシステムです。 Quartzを使用すると、数十、数百、さらには数万のジョブを実行するための単純なまたは複雑なスケジュールを作成できます。タスクが標準JavaコンポーネントまたはEJBとして定義されているジョブ。 Quartz Schedulerには、JTAトランザクションやクラスタリングなどのエンタープライズクラスの多くの機能が含まれています。

2

http://www.opensymphony.com/quartz/wikidocs/Features.htmlを見て、それがあなたのために何かを持っているかどうかを確認してください。そのページから、

:含まJDBCJobStoreを使用することで

は、「非揮発性」として設定されているすべてのジョブおよびトリガーは、JDBC

2

別経由して、リレーショナルデータベースに格納されていますTerracottaを使用するようなものかもしれません。Terracottaは、JVMでヒープをクラスタリングし、可用性を維持する機能を備えています。 Terracottaはスケジューリングの観点から有用な場合Quartzとの統合をサポートしています。また、マスター作業者とメッセージングintegration moduleもあります。テラコッタはオープンソースです。

2

アレックスのポイントをフォローアップすると、テラコッタのソリューションはあなたのジョブをデータベースに永続化せず、Terracotta分散メモリストアで永続的になります。

Terracottaはメモリストアをディスクに保存しているので、これらのジョブをデータベースに格納するより効率的なバージョンです。

同時に、純粋なPOJOプログラミングモデルを提供するので、特定の作業負荷がDBと話をしない限り、DBのtxns、ORMなどを扱う必要はありません(その場合テラコッタはここであなたを助けたり傷つけたりすることはありません。仕事を配布するだけです。

MasterWorkerパターンを使用して、グリッド上で動作し、配布するのに役立ちます、とあなたは非常に簡単にDistributedExecutorServiceを使用して始めることができ、作業を提出することは次のようになります。

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

はここQuickstart guide in the master-worker implementation on the Terracotta Forgeへのリンクです。

多くはである何 - テラコッタあなたはSerializableを実装している必要はありません - あなたはURLが古くなっている

+0

を:)にしたいことができるかどうかが、この[テラコッタとマスタ・ワーカ]を試してくださいます(http:// www.infoq.com/articles/master-worker-terracotta) –

関連する問題