Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Wiki Markup
h2. BacklogDebugger
*Available as of Camel 2.12*

Camel supports a backlog debugger that is used for live debugging of message they are routed in Camel.
The backlog debugger has additional functionality for easier debugging aimed at tooling, than the [Debugger]. The backlog debugger is exposed in JMX in the tracer node with the name {{BacklogDebugger}}. The JMX API is defined in the {{org.apache.camel.api.management.mbean.ManagedBacklogDebuggerMBean}} interface.

You can enable or disable the BacklogDebugger dynamically, by calling {{enableDebugger}} or {{disableDebugger}} methods.

h3. Options
{div:class=confluenceTableSmall}
|| Option || Default || Description ||
| {{enabled}} | {{false}} | Whether the debugger is enabled or not. |
| {{singleStepMode}} | {{false}} | Whether currently in single step mode of a single [Exchange]. |
| {{bodyMaxChars}} | {{128kb}} | To limit the message body to a maximum size in the traced message. Use 0 or negative value to use unlimited size. |
| {{bodyIncludeStreams}} | {{false}} | Whether to include the message body of stream based messages. If enabled then beware the stream may not be re-readable later. See more about [Stream Caching]. |
| {{bodyIncludeFiles}} | {{true}} | Whether to include the message body of file based messages. The overhead is that the file content has to be read from the file. |
{div}

h3. Operations
{div:class=confluenceTableSmall}
|| Option || Type || Description ||
| {{enableDebugger}} | {{void}} | To enable the debugger |
| {{disableDebugger}} | {{void}} | To disable the debugger |
| {{getDebuggerCounter}} | {{long}} | Gets the total number of debugged messages. |
| {{resetDebuggerCounter}} | {{void}} | To reset the debugger counter. |
| {{dumpTracedMessagesAsXml(nodeId)}} | {{String}} | To dump the debugged messages from the give node id in XML format. |
| {{addBreakpoint(nodeId)}} | {{void}} | To add a breakpoint at the given node. |
| {{addConditionalBreakpoint(nodeId, language, predicate)}} | {{void}} | To add a conditional breakpoint at the given node. The predicate is created from the [language|languages] parameter. |
| {{removeBreakpoint(nodeId)}} | {{void}} | To remove the breakpoint from the given node id. |
| {{resumeBreakpoint(nodeId)}} | {{void}} | To resume a suspend breakpoint, which will then continue routing the [Exchange]. |
| {{resumeAll}} | {{void}} | To resume all suspended breakpoints. |
| {{getSuspendedBreakpointNodeIds}} | {{Set<String>}} | To get a set of all the nodes which has suspended breakpoints (eg an [Exchange] at the breakpoint which is suspended). |
| {{stepBreakpoint(nodeId)}} | {{void}} | To start single step mode from a suspended breakpoint at the given node. Then invoke {{step}} to step to next node in the route. |
| {{step}} | {{void}} | To step to next node when in single step mode. |
| {{getBreakpoints}} | {{Set<String>}} | To get a set of all the nodes which has a breakpoint added. |
| {{enableBreakpoint(nodeId)}} | {{void}} | To active a breakpoint which has been temporary disabled. |
| {{disableBreakpoint(nodeId)}} | {{void}} | To disable a breakpoint temporary. |
| {{setMessageBodyOnBreakpoint(nodeId,body)}} | {{void}} | To update the message body on the suspended [Exchange] at the node. |
| {{setMessageHeaderOnBreakpoint(nodeId,headerName,value)}} | {{void}} | To update/add the message header on the suspended [Exchange] at the node. |
{div}

h3. Enabling

You would need to enable this using the JMX API.

h3. See Also
- [BacklogTracer]
- [Debugger]
- [Log]