簡體   English   中英

在Spring Integration中使用攔截器發送日志消息

[英]Sending Logging Message with Interceptor in Spring Integration

是否可以在Spring Integration中配置攔截器以指定日志消息?

這與使用竊聽將消息發送到日志記錄通道適配器預訂的日志記錄通道相反。 這種方法的問題在於,日志記錄通道具有要確切記錄的內容的表達式。 在我的用例中,我想使用全局通道攔截器來指定日志記錄消息並將其發送到日志記錄通道適配器,而不必為我可能想要的每個可能的日志記錄消息定義日志記錄通道適配器。

有一會兒我以為我可以定義一個帶有SpEL表達式的服務激活器,以在通道攔截器定義內生成字符串記錄消息(以及所需記錄通道的輸出通道),但是它正在尋找輸入通道。

不用竊聽,您可以創建對<publish-subscribe-channel/>感興趣<publish-subscribe-channel/>

將適當的轉換器訂閱到通道(將output-channel發送到日志適配器)。

您可以使用轉換器和其他訂戶上的order屬性控制日志是發生在實際訂戶之前還是之后。

另一種選擇是全局攔截器,它向消息添加頭

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

然后將其發送到<header-value-router/> ,后者依次路由到適當的轉換器,再路由到單個日志記錄通道適配器。

當然,如果您願意,可以將路由和/或轉換合並到攔截器中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM