春にアプリケーションがあり、DB および jms キューとやり取りするサービスはほとんどありません。2 フェーズ コミットを処理するために、atomikos を使用しました。
私が持っている質問は、設計の観点から、サービス実行の最後にすべてのキュー操作を行う場合、キューにメッセージを入れた後のエラーの可能性が非常に少なくなる場合、それでも 2 フェーズ コミットを使用する必要がありますか?
私は以前のプロジェクトで 2 台の PC を使用しており、サービス ロジックが上記のように適切に調整されていれば、データが破損する可能性は非常に低いと常に感じています。
もちろん、失敗するケースもあります (ネットワークまたはデータベースの障害のために txn をコミットできない場合、キューは処理されます) - いずれにせよ対処しなければならない大きな問題です。
ご意見をお聞かせください。サービス ロジックを整理することで、上記のような 1 つの DB と 1 つの jms キューのみが関係する単純なシナリオで JTA を回避できないでしょうか?
ありがとう、ライヴ。