Apache Camel 和 hawt.io 调试:Body/Header 在断点处不可见
Apache Camel and hawt.io debugging: Body/Header not visible at breakpoint
我目前正在使用 Apache Camel 和 hawt.io 来监控和调试我的 Camel 路由。这非常有效,即使一些重要信息在某种程度上隐藏在文档中。例如,我花了一点时间才打开调试。
但是,如果我设置 断点 消息处理在路由的那个点停止 ,我 那时看不到我的 Camel 交换的任何“body”或“headers”。我尝试了各种设置:
- 在 CamelContext 上启用跟踪/积压跟踪
- 在路由上启用跟踪/积压跟踪
- 调整了 MBean“BacklogDebugger”和“BacklogTracer”的设置。
“跟踪”选项卡上的跟踪效果很好:如果我在“跟踪”选项卡中激活跟踪,我可以看到我的消息流经路线。
只有停在断点处才不会显示body和header。
已编辑:在对其他方面进行一些更改(例如为大多数路由节点分配 ID)后,调试工作包括 body 和 [=99= 的显示]s。我不知道是什么改变让它起作用了。
同时我的应用程序 属性“camel.main.debugging=true”启动失败
Error binding property (camel.main.debugging=true) with name: debugging on bean: org.apache.camel.main.MainConfigurationProperties
我不得不在这样的上下文中启用调试:
getContext().setDebugging(true);
这里有一些信息:
- 我不使用任何特殊的框架:普通的旧 Java 以及我在其中启动的 Main 方法 Camel-Main。
- 阿帕奇骆驼:3.14.1
- Jolokai 代理:1.7.1
- hawt.io: 2.14.5
- 交换 body 类型:DOMSource
我的路线之一:
getCamelContext().setBacklogTracing(true);
from(rabbitMqFactory.queueConnect("tso11", "tso11-to-nms", "username"))
.routeGroup("Workflow")
.routeId("Workflow-to-NMS|Map-TSO11-to-NMS42")
.routeDescription("Mapping of TSO11 Message to NMS42")
.convertBodyTo(DOMSource.class)
.log("Message for '$simple{header:tenant}' received")
.process(tso11ToNmsMappingProcessor)
.to("xslt:xslt/tso11-to-nms42.xslt")
.to("direct:send");
这是我当前的属性:
camel.main.name=TSO11
camel.main.jmxEnabled=true
camel.main.debugging=true
camel.main.backlogTracing=true
camel.main.lightweight=false
camel.main.tracing=false
camel.main.useBreadcrumb=true
有什么想法吗?有什么好的文档提示吗?
我还有一些不太重要的问题,但我会为这些打开另一个问题。
谨记
伯特
最后是调试选项卡(空body)和跟踪选项卡(body 内容):
我找到问题的原因:
我使用的是hawt.io的camel插件目前不支持的Camel 3.15.0。
使用最新的 3.14.x 时,它就像一个魅力:-)
希望在不久的将来还有camel插件的维护者改进它。我愿意做出贡献,但无法访问 hawt.io 开发人员信息,而且我无法理解如何从本地源代码 运行 hawt.io ....尤其是如何包含 camel 插件,它在一个单独的 github 项目中。
我目前正在使用 Apache Camel 和 hawt.io 来监控和调试我的 Camel 路由。这非常有效,即使一些重要信息在某种程度上隐藏在文档中。例如,我花了一点时间才打开调试。
但是,如果我设置 断点 消息处理在路由的那个点停止 ,我 那时看不到我的 Camel 交换的任何“body”或“headers”。我尝试了各种设置:
- 在 CamelContext 上启用跟踪/积压跟踪
- 在路由上启用跟踪/积压跟踪
- 调整了 MBean“BacklogDebugger”和“BacklogTracer”的设置。
“跟踪”选项卡上的跟踪效果很好:如果我在“跟踪”选项卡中激活跟踪,我可以看到我的消息流经路线。
只有停在断点处才不会显示body和header。
已编辑:在对其他方面进行一些更改(例如为大多数路由节点分配 ID)后,调试工作包括 body 和 [=99= 的显示]s。我不知道是什么改变让它起作用了。
同时我的应用程序 属性“camel.main.debugging=true”启动失败
Error binding property (camel.main.debugging=true) with name: debugging on bean: org.apache.camel.main.MainConfigurationProperties
我不得不在这样的上下文中启用调试:
getContext().setDebugging(true);
这里有一些信息:
- 我不使用任何特殊的框架:普通的旧 Java 以及我在其中启动的 Main 方法 Camel-Main。
- 阿帕奇骆驼:3.14.1
- Jolokai 代理:1.7.1
- hawt.io: 2.14.5
- 交换 body 类型:DOMSource
我的路线之一:
getCamelContext().setBacklogTracing(true);
from(rabbitMqFactory.queueConnect("tso11", "tso11-to-nms", "username"))
.routeGroup("Workflow")
.routeId("Workflow-to-NMS|Map-TSO11-to-NMS42")
.routeDescription("Mapping of TSO11 Message to NMS42")
.convertBodyTo(DOMSource.class)
.log("Message for '$simple{header:tenant}' received")
.process(tso11ToNmsMappingProcessor)
.to("xslt:xslt/tso11-to-nms42.xslt")
.to("direct:send");
这是我当前的属性:
camel.main.name=TSO11
camel.main.jmxEnabled=true
camel.main.debugging=true
camel.main.backlogTracing=true
camel.main.lightweight=false
camel.main.tracing=false
camel.main.useBreadcrumb=true
有什么想法吗?有什么好的文档提示吗?
我还有一些不太重要的问题,但我会为这些打开另一个问题。
谨记 伯特
最后是调试选项卡(空body)和跟踪选项卡(body 内容):
我找到问题的原因:
我使用的是hawt.io的camel插件目前不支持的Camel 3.15.0。 使用最新的 3.14.x 时,它就像一个魅力:-)
希望在不久的将来还有camel插件的维护者改进它。我愿意做出贡献,但无法访问 hawt.io 开发人员信息,而且我无法理解如何从本地源代码 运行 hawt.io ....尤其是如何包含 camel 插件,它在一个单独的 github 项目中。