是否可以在 Spring Integration 中配置拦截器来指定日志消息?
这与使用窃听将消息发送到日志记录 channel 适配器订阅的日志记录 channel 形成对比。这种方法的问题在于日志记录 channel 具有精确记录内容的表达式。在我的用例中,我想使用全局 channel 拦截器来指定日志记录消息并将其发送到日志记录 channel 适配器,而不必为我可能想要的每个可能的日志记录消息定义一个日志记录 channel 适配器。
有一段时间,我认为我可以使用 SpEL 表达式定义一个服务激活器,以在 channel 拦截器定义内生成字符串日志消息(以及 deisred 日志 channel 的输出 channel ),但它正在寻找输入- channel 。
最佳答案
您可以创建您感兴趣的 channel <publish-subscribe-channel/>
,而不是使用窃听。 s。
将适当的转换器订阅到 channel (使用 output-channel
发送到日志记录适配器)。
您可以使用 order
控制日志是在真实订阅者之前还是之后发生。变压器和其他订阅者的属性。
另一种选择是全局拦截器,它向消息添加 header
MessageBuilder.fromMessage(message).setHeader('foo', routeForThisMessageType).build()
然后将其发送至<header-value-router/>
依次路由到适当的变压器,然后路由到单个日志记录 channel 适配器。
当然,如果您愿意,您可以将路由和/或转换直接组合到拦截器中。
关于java - 在 Spring Integration 中使用拦截器发送日志消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14690156/