同一のスタンドアロン JBoss 5.1 サーバーが 2 台あります。Oracle データベースのテーブルとして実装されているキューを処理するために定期的にウェイクアップするアプリケーションを作成しています。
擬似コードは次のとおりです。
- 起きろ。
- 現在の時刻は午前 7 時から午後 7 時の間ですか。はいの場合は、続行します。いいえの場合は、5 分間眠りに戻ります。
- 「キュー」テーブルの最初の行の内容を読み取ります
- 手順 3 で読み取ったコンテンツを含む HTTP POST を別のサーバーに送信します。
- POST が成功した場合は、行を削除します。それ以外の場合は、その行をテーブルに残します。
- 次の行に移動し、手順 3 ~ 5 をテーブルの最後まで繰り返します。
- 5分間寝ます。
私の質問は、行が 2 回処理されないようにするにはどうすればよいですか (結果として 2 つの POST が発生します)。
利用できる JavaEE アノテーション、または JBoss に組み込まれたロック機構はありますか?
理想的なソリューションは、アプリケーションが両方のサーバーに同じようにデプロイされることです。つまり、同じアプリケーションが両方のノードに存在します。