jms:message-driven-channel-gateway で構成された SI を使用しています。私の使用例は、キューからメッセージを受信し、それを JDBC 経由でデータベースに保存し、キューからメッセージをコミットしてから、このメッセージがそのタイプに応じてさまざまなチャネルを通過し続けるようにすることです。その後メッセージがエラーになった場合、元のメッセージがデータベースに保存されているため、再生できるので問題ありません。
私の問題は、データベースが持続した直後にキューからトランザクションをコミットしようとすることです。これは事実上フローの途中であり、春のトランザクション管理を最後に試してコミットすることしかできませんでした。これは適切ではありません。データベースが永続化された後にエラーがスローされた場合でも、JMS キューにメッセージが残るためです。これは、外部トランザクションが発生した場所であるためです。
では、メッセージを JMS キューからプルし、データベースに保存してから、キューからコミットする簡単な方法はありますか?
ありがとう!