2017-10-17 15 views
0

私のアプリケーションは、現在使用してアプリケーションの起動時にデフォルトのスケジューラをインスタンス化し、起動します:クラスタ化されていないQuartzスケジューラ:アプリケーションの起動時にスケジューラをインスタンス化して起動する...これは複数のマシンで安全ですか?

@Override 
public void contextInitialized(ServletContextEvent arg0) { 
    try { 
     Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); 
     scheduler.start(); 
    } catch (SchedulerException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

このロジックは、クラウド・マシン上だけでなく、地元の開発マシン上で実行され、quartz.propertiesが現在非クラスタモードに設定されています。アプリケーションはJDBCジョブストアも使用しています。

マシンごとに1つのスケジューラインスタンスが必要であることを心配しています。複数のマシンでQuartz Schedulerを管理する方法に関する推奨事項を教えてください。このユースケースではクラスタリングが必要ですか?

毎分テストトリガーを実行するようにスケジュールを設定しました。雇用の重複はありませんでしたが、失業とはみなされなかった少数の火災が発生したことに気付きました。

+0

あなたはユースケースを詳しく説明できますか?あなたが何を記述しているかはあまり明確ではありません。あなたのユースケースは、クラスタを形成することによって負荷を共有するために複数のインスタンスを必要とするか、永続性サポートを探しているだけですか?各ノードが自分の作業負荷を管理していますか? – Srinivas

+0

@Srinivasの設定を変えて遊んだ後、私はこのアプリで動作する設定を見つけました。私はそれについて以下の答えで詳しく書くつもりです。 – plsplox

答えて

0

私は設定と設定を使い遊んで、自分のアプリケーションで動作する設定が見つかりました。アプリケーションサーバーは、クラスタ構成からWebリソースを提供します。私の間違いは、クラスタ化されていないスケジューラーインスタンスを各アプリケーションサーバーで開始していました。

現在のところ、このアプリケーションではスケジュールされたジョブを処理するために複数のマシンが必要であるとは思われません。また、私は、クラウドサーバーでシステム時間を同期させる方法を理解していませんでした。これはQuartzのクラスタリング機能の要件です。

私は1つのスケジューラインスタンスを起動するクラスタ化されていない単一のマシンを専用にしました。この構成は期待通りに機能し、奇妙なバグは消滅しています(未確認失火など)。

関連する問題