如何在弹簧集成流中的线程本地中注入变量



我需要在 spring 集成流中注入一个 callContext 对象作为线程本地。在 jms 标头中接收的 traceId 应该在 callContext 对象中提取 n 集,以便将其打印在项目级别配置的日志中。

IntegrationFlows.from(Jms.messageDrivenChannelAdapter(connectionFactory).destination(topicName))
.log(INFO, m-> “message received for: + ((Order)m.getPayload()).getOrderId())
.handle(orderService)
.get();

您可以在orderService中执行此操作,也可以在它之前添加其他服务。

我想说的是log()运算符的Function使您可以完全控制要登录消息的内容。当然,也避免了ThreadLocal开销。但是,如果您仍然想使用它,我建议您在该log()之前进行.wireTap(),这样您就可以在不影响主流的情况下将值存储在ThreadLocal(MDC?(中。

只有你必须记住清洁的问题callContext以某种方式避免螺纹局部污染。

相关内容

  • 没有找到相关文章

最新更新