0

クラスター化された環境にデプロイされたアプリケーションがあります。アプリケーションは、5 分ごとに、接続されている他のすべてのアプリケーションに ping 操作を送信します。この作業を行うために、非永続的 Quartz スケジューラーを使用しました。

問題は、クラスタ化された環境では、1 つのノードだけがこのアクティビティ (ping 操作) を実行していることです。これに関する参考文献やサンプルコードはありますか? (これは単純なサーブレット アプリケーションです。)

4

1 に答える 1

0

すべてのノードがクラスターで動作しているため、すべてのジョブは単一のマシン (最もアイドル状態のマシン) で実行されます。これが、クラスタリングを使用する理由です。ただし、他のクラスター ノードを認識せずに、すべてのマシンで特定のジョブを個別に実行する必要があります。基本的に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 を使用してください。

于 2012-10-16T16:54:42.287 に答える