私たちのプロジェクトでは、従来の統合アーキテクチャではなく、春の統合を紹介します。このアーキテクチャは、送信者と受信者をサポートします。各送信者は 3 つの宛先で構成できます。
- メッセージが配信されるメインのデータ フロー。それはファイルシステム、jms、メールなどです
- バックアップの流れ。受信した各メッセージをバックアップ先に保存します。通常、各メッセージがファイルの最後に保存されるファイルアペンダーです。これは jms キューでもかまいません。バックアップにより、システム全体が故障してデータが失われた場合に、メッセージを取得して再生する機会が得られます
- 失敗フロー。メッセージを宛先に送信できない場合 (接続なし、フォーマットされたメッセージの作成に失敗した場合)、メッセージはこのキューに入れられます。
Spring 統合ゲートウェイが適切に見えます。メイン フローには default-request-channel を、失敗フローには error-channel を使用できます。バックアップ フローの問題。ゲートウェイの受信メッセージをコピーしてバックアップ チャネルに配置するにはどうすればよいですか?
PS より正確に言うと、ここにテストとコードがあります。
https://github.com/semenodm/Coding-Exercises/tree/master/spring-integration/spring-integration/src
テストi_want_my_sender_put_message_into_fail_queue_when_sending_failedは失敗しました。これは、メイン ストリームの失敗または成功に関係なく、Wire Tap が常にメッセージをキューに入れるためです。
このロジックを処理し、構成を使用してこの問題に対処するために、カスタム インターセプターを追加したくありません。