首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在spring集成流程中如何在threadlocal中注入变量

问在spring集成流程中如何在threadlocal中注入变量
EN

Stack Overflow用户
提问于 2019-10-11 20:52:46
回答 2查看 111关注 0票数 0

我需要在spring集成流中注入一个callContext对象作为thread Local。在jms头中接收到的traceId应该在callContext对象中提取和设置,以便在项目级别配置的日志中打印出来。

代码语言:javascript
复制
IntegrationFlows.from(Jms.messageDrivenChannelAdapter(connectionFactory).destination(topicName))
.log(INFO, m-> “message received for: + ((Order)m.getPayload()).getOrderId())
.handle(orderService)
.get();
EN

回答 2

Stack Overflow用户

发布于 2019-10-14 21:39:52

你可以在你的orderService中这样做,或者在它之前添加另一个服务。

票数 0
EN

Stack Overflow用户

发布于 2019-10-15 03:53:13

我想说的是,log()的Function操作员为您提供了对您想要登录到消息中的内容的完全控制。当然,也避免了ThreadLocal的开销。但是如果你仍然想使用它,我建议在这个log()之前使用一个.wireTap(),这样你就可以在你的ThreadLocal中存储一个值(MDC?)而不会影响主流。

唯一的问题是,你必须记得以某种方式清理那个callContext,以避免线程局部污染。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58341685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档