私は春のRESTコントローラ&を使用していますが、両方のRESTクライアントがコントローラを呼び出して処理される値を取得する状況がありますが、どちらも同じ値を処理しています彼らは同時に両方のコントローラを呼び出します。私はプロバイダとして休止状態でJPAを使用しています。コントローラからの初心者の取引トランザクションの質問
コールを別々のトランザクションにスコープする必要があることは知っていますが(@Transactionalアノテーションをコントローラメソッドに置いていますが)、同じ値を取得していることがわかります。
デバイス1 - タイムスタンプ0:イベントキューからすべての "保留" イベントを読み込み
コントローラーA:「処理するアップデート "保留" イベント
コントローラーAのコントローラへの呼び出し"イベント
デバイス2 - タイムスタンプ0:コントローラへのコール
コントローラーB:アップデート「保留」イベントに「処理済み」イベント
コントローラーBはコントローラーAが選ばれた値はいけない:はイベントキューからすべての「保留」イベント
コントローラーBを読み込み&処理済み...
だから、私が探していると思うものは、トランザクション間で「読み取りロック」です。
私は拡張性に興味があるので、スケーラビリティを(つまりは唯一可能な限り短くするためにDBトランザクションを保持したい)を助ける最善のアプローチを採用したい... おかげで、
ありがとうございます - これは完全な再設計となるので、私はJMSルートを下りたいと思っています.... – Ian