クラスター化された環境にデプロイされたアプリケーションがあります。アプリケーションは、5 分ごとに、接続されている他のすべてのアプリケーションに ping 操作を送信します。この作業を行うために、非永続的 Quartz スケジューラーを使用しました。
問題は、クラスタ化された環境では、1 つのノードだけがこのアクティビティ (ping 操作) を実行していることです。これに関する参考文献やサンプルコードはありますか? (これは単純なサーブレット アプリケーションです。)
クラスター化された環境にデプロイされたアプリケーションがあります。アプリケーションは、5 分ごとに、接続されている他のすべてのアプリケーションに ping 操作を送信します。この作業を行うために、非永続的 Quartz スケジューラーを使用しました。
問題は、クラスタ化された環境では、1 つのノードだけがこのアクティビティ (ping 操作) を実行していることです。これに関する参考文献やサンプルコードはありますか? (これは単純なサーブレット アプリケーションです。)
すべてのノードがクラスターで動作しているため、すべてのジョブは単一のマシン (最もアイドル状態のマシン) で実行されます。これが、クラスタリングを使用する理由です。ただし、他のクラスター ノードを認識せずに、すべてのマシンで特定のジョブを個別に実行する必要があります。基本的にQuartz(クラスター)は一切必要ありません!
使用するだけで十分ですScheduledExecutorService.html#scheduleAtFixedRate()
:
final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
final Runnable pinger = new Runnable() {
public void run() {
//send PING
}
};
scheduler.scheduleAtFixedRate(pinger, 5, 5, MINUTES);
すべてのマシンでこのコードを実行し、必要な場所で Quartz を使用してください。