0

私たちのプロジェクトでは、従来の統合アーキテクチャではなく、春の統合を紹介します。このアーキテクチャは、送信者と受信者をサポートします。各送信者は 3 つの宛先で構成できます。

  1. メッセージが配信されるメインのデータ フロー。それはファイルシステム、jms、メールなどです
  2. バックアップの流れ。受信した各メッセージをバックアップ先に保存します。通常、各メッセージがファイルの最後に保存されるファイルアペンダーです。これは jms キューでもかまいません。バックアップにより、システム全体が故障してデータが失われた場合に、メッセージを取得して再生する機会が得られます
  3. 失敗フロー。メッセージを宛先に送信できない場合 (接続なし、フォーマットされたメッセージの作成に失敗した場合)、メッセージはこのキューに入れられます。

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 が常にメッセージをキューに入れるためです。

このロジックを処理し、構成を使用してこの問題に対処するために、カスタム インターセプターを追加したくありません。

4

2 に答える 2

0

両方のアダプターを負荷分散なしで直接チャネルにサブスクライブし、各サブスクライバーにorder属性を設定すると、最初のアダプターが例外をスローした場合、フレームワークは自動的に2番目のアダプターにフェイルオーバーします。

<int:channel id="foo>
    <int:dispatcher load-balancer="none" />
</int:channel>

<... id="primary" order="1" .../>

<... id="secondary" order="2" .../>

デフォルトのロードバランサーはラウンドロビンです。

もう1つのオプションは、次の2.2リリースで新しいExpressionEvaluatingMessageHandlerAdviceを使用することです...

http://blog.springsource.org/2012/10/09/spring-integration-2-2-retry-and-more/

于 2012-11-09T17:01:26.277 に答える
0

「backupChannel」に送信する盗聴を追加することを検討することをお勧めします。

参照:http ://static.springsource.org/spring-integration/docs/2.1.x/reference/htmlsingle/#channel-wiretap

于 2012-11-09T16:19:28.600 に答える