2016-06-13 2 views
1

複数の項目を含む上流メッセージが入ってくる状況を想像してみましょう。各項目には、パイプラインの一部として実装されるビジネスロジックに関わる情報が含まれています。私が見ることができる複数の項目を含むアップストリームイベント1つ、バリュー統合パイプラインをトランザクション単位で設定する方法

難しさ: メッセージは、複数の内部イベントに変換&を分割する必要があり、それらがさらに処理され、そのうちの一つが失敗した場合、我々は= 1 1つのアップストリームのメッセージを持っていた場合は、すべての内部イベントが をロールバックする必要があります項目は、それははるかに簡単だろう

どのように1つのアーキテクチャの観点からこのような状況に対応する必要がありますか? ここで採用するのに最適なパターンは何ですか? トランザクションをどのように設定する必要がありますか?

ありがとうございます!あなたの質問は明確ではないとtransaction単語が異なる被験者のために使用されていることのように

答えて

0

は、とにかく、私はあなたが何をしたいと思いましょう...見えます。

ビジネスリクエストの一部をロールバックする予定がある場合は、すべてのグローバルXAトランザクションを確実に確保し、すべての分割されたサブタスクを同じスレッドで処理するだけです。これにより、トランザクションとロールバックを保持し追跡することができます。

XAとシングルスレッドを扱うことができない場合は、補償トランザクションのようないくつかの解決策を検討するか、クレームチェックで確認する必要があります。

しかし、これはすでにSpring Integrationスコープの外にあります。

+0

こんにちはArtem、私は私の質問を更新しました。 私が達成したいのは、上流のメッセージを消費し、複数の内部イベントにチャンクし、何らかの理由でそれらの内部イベントが失敗した場合、ロールバックすることです。 グローバルXAトランザクションの使用は引き続き適用されますか?どの例をお勧めしますか?ありがとう! –

+0

そうです。しかし、1つのスレッドですべてを保証する必要があります。さもなければtx境界はなく、自動ロールバックはありません。 –

+0

なので、AtomikosとSpringの統合フローを何らかの形で組み合わせるべきですか(JTA txマネージャを設定するなど)? 私たちは開発目的でtomcatを、製品ではweblogicを使用します –

関連する問題