【发布时间】:2026-01-26 17:10:01
【问题描述】:
我们发现,当我们在一个事务中通过direct-vm连接了2条路由,并且启用了MDC日志记录,当第二条路由在direct-vm调用后返回到第一条路由时,MDC中的routeId丢失(MDC 中的其他所有内容都完好无损)。
我们使用的是 2.24.3 版本,路由是在 springboot 应用程序中引导的 JAVA DSL 中定义的。
使用 Camel 源代码进行调试将我们带到 这节课 https://github.com/apache/camel/blob/camel-2.24.3/camel-core/src/main/java/org/apache/camel/impl/MDCUnitOfWork.java 我们可以看到在第 112 行,这就是 routeId 被删除的地方
// not running in route, so clear (should ideally not happen)
MDC.remove(MDC_ROUTE_ID);
但我并不完全理解路线上下文如何适应图片,首先如何创建路线上下文。 我找不到太多关于路由上下文的文档,除了它可以用作在单独的 XML 文件中对路由进行分组并导入到骆驼上下文中的一种方式,这在我们的案例中是无关紧要的。
任何人都可以点亮一些灯,将不胜感激! 提前致谢。
【问题讨论】:
标签: apache-camel