タイマーを使用する Java EE アプリを適切にクラスター化する方法を探しています。適切にクラスター化するということは、次の機能を探しているということです。
- タイマーの実行は、他のクラスター ノードにフォールバックする必要があります。これは、ノード A の EJB がタイマー
timerService.createIntervalTimer(/* every 10 seconds */)
を作成したことを意味します。その後、オフライン (クラッシュ) になり、ノード B (同じアプリがデプロイされている他のクラスター ノード) でタイムアウト呼び出しが開始されます。 - タイマーはクラスター全体でアクセスできる必要があります。つまり、EJB X がノード A で実行されるタイマーを作成した場合、クラスタ ノード B で実行されている同じ EJB X (明らかに同じクラス) は、次のようなことを行うことでそのタイマーをキャンセルできます。
timerService.getTimers().iterator().next().cancel();
- タイマーの実行はクラスター全体に分散できます。たとえば、タイムアウト メソッドが 10 秒以内に完了しなかった長い計算である場合 (タイマーが次に期限切れになるとき)、次のタイムアウト呼び出しを別の方法で実行したいと思います。 as-busy ノード。
明らかに、これは私の理想的な機能セットですが、正しい方向へのポインターは大歓迎です。