0

同一のスタンドアロン JBoss 5.1 サーバーが 2 台あります。Oracle データベースのテーブルとして実装されているキューを処理するために定期的にウェイクアップするアプリケーションを作成しています。

擬似コードは次のとおりです。

  1. 起きろ。
  2. 現在の時刻は午前 7 時から午後 7 時の間ですか。はいの場合は、続行します。いいえの場合は、5 分間眠りに戻ります。
  3. 「キュー」テーブルの最初の行の内容を読み取ります
  4. 手順 3 で読み取ったコンテンツを含む HTTP POST を別のサーバーに送信します。
  5. POST が成功した場合は、行を削除します。それ以外の場合は、その行をテーブルに残します。
  6. 次の行に移動し、手順 3 ~ 5 をテーブルの最後まで繰り返します。
  7. 5分間寝ます。

私の質問は、行が 2 回処理されないようにするにはどうすればよいですか (結果として 2 つの POST が発生します)。

利用できる JavaEE アノテーション、または JBoss に組み込まれたロック機構はありますか?

理想的なソリューションは、アプリケーションが両方のサーバーに同じようにデプロイされることです。つまり、同じアプリケーションが両方のノードに存在します。

4

2 に答える 2

0

複数のコンシューマで JMS キューを使用できます。

正しく構成されている場合、各メッセージは 1 つのコンシューマーにのみ配信され、JMS プロバイダーは複数のコンシューマー間で「負荷分散」を行います。

于 2013-06-19T20:46:22.627 に答える