1

2 つの異なるマシンで実行される webapp があります。webapp から、Quartz によって特定の時間に実行されるジョブを「注文」することができます。Quartz は webapp 内で実行されています。したがって、Quartz は 2 台のマシンのそれぞれで実行されます。ジョブ、トリガーなどを永続化するために JDBC データストアを使用しています。

ただし、マシンの 1 つだけがジョブを実行し、もう 1 つのマシンはクォーツのみを使用してジョブをスケジュールするという考え方です。したがって、スケジューラはいずれかのマシンでのみ開始 (scheduler.start()) されます。

ドキュメントでは、それは言う

非常に定期的に実行される何らかの形式の時刻同期サービス (デーモン) を使用してクロックが同期されていない限り (クロックは互いに 1 秒以内である必要があります)、別々のマシンでクラスタリングを実行しないでください。これを行う方法に慣れていない場合は、http://www.boulder.nist.gov/timefreq/service/its.htmを参照してください。

クラスター化されていないインスタンスを、他のインスタンスが実行 (start()) されているのと同じデータベース テーブルのセットに対して決して開始 (scheduler.start()) しないでください。重大なデータ破損が発生する可能性があり、間違いなく異常な動作が発生します。

また、webapp が実行されている 2 台のマシンのクロックが同期されているかどうかもわかりません。

私の質問は次のとおりです。Quartzインスタンスの1つだけが開始されてジョブを実行し、他のインスタンスは最初のインスタンスによって実行されるジョブのスケジュールにのみ使用される場合、このセットアップのクラスタリングモードでQuartzを実行する必要があります.

4

2 に答える 2

1

1 つのノードでのみスケジューラーを開始し、別のマシンでリモートにアクセスするのはどうでしょうか? RMI/JMX を使用してジョブをスケジュールできます。RemoteSchedulerまたは、アダプターを使用することもできます。

基本的に、1 つが機能し、もう 1 つが共有データベースにのみアクセスする 2 つのクラスター化されたスケジューラーを使用する代わりに、1 つのスケジューラー (サーバー) のみを使用し、別のマシンからアクセスして、API を介してジョブをスケジュールおよび監視します。

于 2012-04-17T12:55:50.660 に答える
0

2 番目のノードで start() メソッドをまったく呼び出さない場合は、クロック同期について心配する必要はありません。

ただし、両方のノードでデータが挿入/更新/削除されたときにテーブルベースのロックが使用されるように、 isClustered config prop を true に設定する必要があります。

于 2012-04-17T12:43:51.913 に答える