2016-03-21 8 views
1

JdbcStoreを使用して2つのJVMにジョブコードをデプロイする場合、@DisallowConcurrentExecutionはすべてのJVMで1つのジョブしか実行しないようにしますか?Quartzの@DisallowConcurrentExecutionは複数のJVMで機能しますか?

+0

@Jimmyしたがって、1つのジョブがサーバー間で確実に実行されるようにするには、唯一の方法は手動でチェックすることです。 – Glide

+0

質問が間違っています。あなたの石英サーバーは実行回数を管理しているので、参考文献[link](http://www.quartz-scheduler.org/documentation/quartz-2.x/examples/Example4)とその[source_link](http://www.docjar.com/html/api/org/quartz/examples/example4/ColorJob.java.html)および[17ページ目](http://quartz-scheduler.org/ファイル/ドキュメンテーション/ Quartz-2.1.x-Documentation.pdf)と[java doc](http://grepcode.com/file/repo1.maven.org/maven2/org.quartz-scheduler/quartz/2.0.0/ org/quartz/DisallowConcurrentExecution.java /#DisallowConcurrentExecution) – Jimmy

答えて

2

はい、そうです。この種の属性は複数のインスタンスでも機能します。ここで重要なのは、hereと記述されているコードではなく、JobKeyに基づいているという属性です。

とにかく、あなたのクロックを同期させるためのデアモンがない限り、複数のサーバーでQuartzを実行しないでください。クォーツガイドから:そのクロックは非常に定期的に実行される時間同期サービス(デーモン)(クロックは互いに秒以内でなければならない)のいくつかのフォームを使用して同期されない限り、

は、別々のマシン上でクラスタリングを実行することはありません。これを行う方法がわからない場合は、http://www.boulder.nist.gov/timefreq/service/its.htmを参照してください。