一部の Spring Bean にトランザクション メソッドがあり、次の 2 つのことを行うとします。
- JMS メッセージを非同期に送信する
- データベースを更新
問題は、メッセージが消費されたときに、DB トランザクションがコミットされていないことがあり、ハンドラーが DB の期待値を見つけられなかったことです。
明らかな解決策は、トランザクションで送信することですが、ActiveMQ で利用可能な非同期送信を使用してスループットを向上させます。送信をトランザクション対応にすると、非同期性が失われ、OuOfMemory を取得するリスクも生じます。
この問題をどのように解決しますか?