blob: 46138a3fd453610972c2bf9ede878607f9445aa0 [file] [log] [blame]
[[BacklogDebugger-BacklogDebugger]]
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 link:debugger.html[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.
[[BacklogDebugger-Options]]
Options
^^^^^^^
[width="100%",cols="10%,20%,70%",options="header",]
|=======================================================================
|Option |Default |Description
|`enabled` |`false` |Whether the debugger is enabled or not.
|`singleStepMode` |`false` |Whether currently in single step mode of a single
link:exchange.html[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
link:stream-caching.html[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.
|=======================================================================
[[BacklogDebugger-Operations]]
Operations
^^^^^^^^^^
[width="100%",cols="10%,20%,70%",options="header",]
|=======================================================================
|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 link:languages.html[language] 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
link:exchange.html[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
link:exchange.html[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 link:exchange.html[Exchange]
at the node.
|`setMessageHeaderOnBreakpoint(nodeId,headerName,value)` |`void` |To update/add the message header on the suspended
link:exchange.html[Exchange] at the node.
|=======================================================================
[[BacklogDebugger-Enabling]]
Enabling
^^^^^^^^
You would need to enable this using the JMX API.
[[BacklogDebugger-SeeAlso]]
See Also
^^^^^^^^
* link:backlogtracer.html[BacklogTracer]
* link:debugger.html[Debugger]
* link:log.html[Log]