【问题标题】:Missing routeId in direct-vm routesdirect-vm 路由中缺少 routeId
【发布时间】: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


    【解决方案1】:

    【讨论】: