0

ロギングメッセージを指定するようにSpringIntegrationでインターセプターを構成することは可能ですか?

これは、盗聴を使用して、ロギングチャネルアダプタがサブスクライブしているロギングチャネルにメッセージを送信するのとは対照的です。このアプローチの問題は、ロギングチャネルに正確に何をロギングするかについての式があることです。私のユースケースでは、必要になる可能性のあるすべてのロギングメッセージに対してロギングチャネルアダプタを定義するのではなく、グローバルチャネルインターセプタを使用してロギングメッセージを指定し、それをロギングチャネルアダプタに送信したいと思います。

しばらくの間、SpEL式を使用してサービスアクティベーターを定義し、チャネルインターセプター定義内に文字列ロギングメッセージ(および必要なロギングチャネルの出力チャネル)を生成できると思いましたが、入力チャネルを探しています。

4

1 に答える 1

1

盗聴を使用する代わりに、興味のあるチャネルを作成することができます<publish-subscribe-channel/>

適切なトランスフォーマーをチャネルにサブスクライブします(output-channelロギングアダプターにアクセスします)。

orderトランスフォーマーおよび他のサブスクライバーの属性を使用して、ログが実際のサブスクライバーの前または後に発生するかどうかを制御できます。

もう1つの方法は、メッセージにヘッダーを追加するグローバルインターセプターです。

MessageBuilder.fromMessage(message).setHeader('foo', routeForThisMessageType).build()

次に、それをに送信します。次に<header-value-router/>、適切な変圧器にルーティングし、そこから単一のロギングチャネルアダプタにルーティングします。

もちろん、必要に応じて、ルーティングや変換をインターセプターに組み合わせることができます。

于 2013-02-04T17:37:05.960 に答える