繁体   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