JMSキューイングシナリオに必要なアドバイス
こんにちは。私はJavaEEとアプリケーションサーバーを初めて使用します。JMSキュー(またはActiveMQ?)ソリューションが私のシナリオに適しているかどうかを知りたいです。今はそうではないと思いますが、気づかないかもしれない選択肢がたくさんあるようです。
プロジェクト(データベース上のデータ)にアクセスできるクライアントアプリケーションがあり、クライアントが終了するまでそのプロジェクトをロックします。クライアントがアプリケーションを閉じない場合、クライアントは何日もプロジェクトをロックしている可能性があります。
プロジェクトで実行するキュー操作にポストするWebサービスを開発する必要があります。難しいのは、このプロジェクトが現在ロックされている場合、これらの操作を保留にする必要があることです。(そして、そのロックがいつ解放されるかはわかりません。そのため、これらの操作をデキューしようとするタイマーが必要になる可能性があります)。
したがって、プロジェクトAが現在ロックされている場合、私のキューは次のようになります。
- プロジェクトAにデータXXXを追加
- プロジェクトBにデータZZZを追加します
- プロジェクトAのデータXXXを更新
- プロジェクトBのデータZZZを更新
- プロジェクトBのデータZZZを削除します
Aがロックされている場合、B(または他のロックされていないプロジェクト)の操作を続行し、後でロックが解除されたときにプロジェクトAを処理できるようにする必要があります。
順序を維持するために保留中の操作があるプロジェクトごとにメモリ内にJMSキューを作成することを考えましたが、キューはApp Serverによって定義されるため、作成できません(作成しないでください)。そして、私は明らかに永続的なキューが必要です(したがって、一時的なキューはありませんか?)
このシナリオでは、JMSキューは適切ですか?ActiveMQまたは別の実装が役立ちますか?
タイマーで独自のキュー/SQLテーブル/EJBでコーディングする必要がありますか?