2016-08-29 6 views
1

バネ処理によるバッチ処理の処理に問題があります。 通常、スプリッタの後、Aggregatorで将来のグループ化のためにすべての要素(Message)にcorrelation_idが割り当てられますが、要素(Message)を処理するときに例外がスローされると、MeesageExceptionが作成され、失われます。スプリングインテグレーションスロー例外(相関ID付き)

HeaderEnricherを使用してcorrelation_idを追加することはできますが、ハードコーディングすることはできません。複数のリクエストがまとめられている場合は、他の賢明な方法を使用してグループ化してください。 ...例外春の統合がCORRELATION_IDを添付しません投げたときに 根本的な原因は...、それが再獲得することはないように思わ

アグリゲータが

どのように対処するため、「CorrelationStrategyが失敗している」文句を言うだろう

この? のは、私の期待がバッチで10のデータポイントかもしれないとしましょう、と私はorg.springframework.messaging.MessagingExceptionは、春の統合コンポーネントによってスローされた場合やSTH

答えて

1

{5を通過し、5を失敗した}の応答を提供したい、それは一般的にfailedMessageプロパティが含まれています問題の原因となったrequestMessageを示します。

すべての必要なヘッダー(correlationIdsequenceNumbersequenceSizeなど)は、そのプロパティに完全に含まれています。

エラー処理の結果をアグリゲータに送り返す場合は、failedMessageのヘッダーを新しく作成したメッセージにコピーする必要があります。

ErrorMessageは完全に別個のフローであり、常にメインフローに戻る保証はないため、フレームワークはデフォルトでこれを行いません。集約のために。

詳細はError Handling chapterを参照してください。

+0

私はこれを持っていると思います!私はint:service-activatorを使ってエラーチャンネルに接続しようとしましたが、メッセージをというメッセージを入力として取り戻しました。実際にはmessage.getpayload.getFailedMessage()にあります。 – edi

+0

本当にありがとうございます! – edi

+0

failedMessageには、ヘッダーを印刷して他の有効なワークフローと比較したときに、元のチャネルとは異なるように思われるreplyChannelも含まれています。私はそれを除外すべきですか、私は失敗したメッセージからのすべてのものをヘッダーに戻すことができますか? – edi

関連する問題