架构

积压调试器

师成师成· 更新于 2026-09-28· 阅读 9 分钟· 0 次阅读

登录后可跨设备保存划线和私人笔记登录

BacklogDebugger(积压调试器)

Camel 支持一种积压调试器,用于对 Camel 中路由的消息进行实时调试。与 Debugger 相比,积压调试器面向工具集成,提供了更多便于调试的附加功能。积压调试器在 JMX 中以 BacklogDebugger 的名称在 tracer 节点中暴露。其 JMX API 定义在 org.apache.camel.api.management.mbean.ManagedBacklogDebuggerMBean 接口中。

你可以通过调用 enableDebugger 或 disableDebugger 方法动态地启用或禁用 BacklogDebugger。

这需要在 classpath 中包含 camel-management JAR 以启用 JMX。

选项

选项默认值说明
bodyIncludeFilestrue是否包含基于文件的消息的消息体。其开销在于必须从文件中读取文件内容。
bodyIncludeStreamsfalse是否包含基于流的消息的消息体。如果启用,请注意该流之后可能无法重新读取。有关更多信息,请参阅流缓存(Stream Caching)。
bodyMaxChars32kb限制被跟踪消息中消息体的最大大小。使用 0 或负值表示不限制大小。
includeExchangePropertiestrue是否在被跟踪的消息中包含 Exchange 属性。
includeExchangeVariablestrue是否在被跟踪的消息中包含 Exchange 变量。
standbyfalse调试器是否处于待命状态。如果调试器处于待命状态,则调试器会在启动时被激活,并随时可通过 JMX 或调用 enableDebugger 方法手动启用。
enabledfalse调试器是否已启用。
singleStepModefalse当前是否处于某个 Exchange 的单步模式。
singleStepLastfalse在单步模式下,当 Exchange 完成时,最后模拟一个断点,从而允许在完成时挂起并观察该 Exchange(可以看到作为响应的消息体、失败的异常等)。

操作

选项类型描述
addBreakpoint(nodeId)void在给定节点处添加断点。
addConditionalBreakpoint(nodeId, language, predicate)void在给定节点处添加条件断点。谓词由 language 参数创建。
disableBreakpoint(nodeId)void禁用断点。
disableDebuggervoid禁用调试器。
dumpTracedMessagesAsXml(nodeId)String以 XML 格式导出给定节点 id 上被调试的消息。
dumpTracedMessagesAsXml(nodeId, boolean)String以 XML 格式导出给定节点 id 上被调试的消息,可选择是否包含 Exchange 属性。
enableBreakpoint(nodeId)void启用曾被禁用的断点。
enableDebuggervoid启用调试器。
evaluateExpressionAtBreakpoint(nodeId, language, expression)String以任何受支持的语言(例如 Simple)计算表达式,并将结果转换为 String。
evaluateExpressionAtBreakpoint(nodeId, language, expression, resultType)Object以任何受支持的语言(例如 Simple)计算表达式,并以给定的结果类型返回结果。
getBreakpointsSet<String>获取所有已添加断点的节点集合。
getDebuggerCounterlong获取被调试消息的总数。
getSuspendedBreakpointNodeIdsSet<String>获取所有具有挂起断点的节点集合(例如某个 Exchange 在断点处被挂起)。
removeBreakpoint(nodeId)void从给定的节点 id 移除断点。
resetDebuggerCountervoid重置调试器计数器。
resumeAllvoid恢复所有挂起的断点。
resumeBreakpoint(nodeId)void恢复某个挂起的断点,使其继续路由该 Exchange。
setExchangePropertyOnBreakpoint(nodeId,exchangePropertyName,value)void更新/添加该节点处挂起 Exchange 上的 Exchange 属性。
setFallbackTimeout(value)long当阻塞 Camel 中的消息处理时的回退超时时间(秒),默认 300 秒。用于等待消息到达给定断点的超时时间。
setMessageBodyOnBreakpoint(nodeId,body)void更新该节点处挂起 Exchange 上的消息体。
setMessageHeaderOnBreakpoint(nodeId,headerName,value)void更新/添加该节点处挂起 Exchange 上的消息头。
stepBreakpoint(nodeId)void从给定节点处的挂起断点开始单步模式。随后调用 step 可步进到路由中的下一个节点。
stepvoid在单步模式下步入下一个节点。
stepOvervoid在单步模式下步过下一个节点。
skipOvervoid在单步模式下跳过下一个节点。
validateConditionalBreakpointString用于验证给定的谓词是否有效。若有效则返回 null,否则返回包含错误消息的字符串。
messageHistoryOnBreakpointAsXml(nodeId)String以 XML 格式返回给定节点 id 处的消息历史记录

启用

你需要使用 JMX API 来启用积压调试器(backlog debugger)。

另请参阅

参见 调试器(Debugger)。

评论

登录后参与评论

正在加载评论…