私の質問は次のとおりです。DB にクエリを実行し、いくつかのレコードを取得するサービスがあります。次に、その情報を使用して外部システムを更新し、最終的に DB を更新します。
spring trascations と weblogic jta transaction manager を使用して、以下のサンプル コードを使用してメッセージを失わないようにすることができました。
- レコードは取得されません。(これらは外部システムには必須です)
- 外部システム エラー
- DB の更新に失敗しました
したがって、上記のすべてのケースで、JMS リスナーはエラー メッセージをキューに戻します。
私の質問は、それを管理するために、Spring とそのすべての利点を使用するより良い方法はありますか? 以下のサンプル コードは明示的に RuntimeException をスローしますが、これは良い設計ではないと思います...
コメントをお願いします。
編集: キューは、その構成が以下に示されている submitListener MDP によってポーリングされています。メッセージが消費されると、サービスの registerDocument() が呼び出されます。(別のSpring Bean)。そのサービスは、DAO と外部システムを 2 回呼び出します。