Debugger
Camel Debugger is much related to Tracer, in fact they are sisters. Debugger is a enhanced tracer with a debugger framework so that tooling can be developed to easily monitor Camel routes, trace messages and set breakpoints at points in a route etc.
@deprecated
The debugger is @deprecated and is removed in Camel 2.0.
The Tracer is sufficient in many cases, and if you want to do some debugging yourself then you can use Intercept.
Or try out Eclipse based tooling that supports visual and integrated debugger in Eclipse, being able to debug Camel routing - FUSE Integration Designer
The Debugger is an InterceptStrategy which can be applied to a DefaultCamelContext or SpringCamelContext to ensure that there is a DebugInterceptor created for every node in the DSL.
You can grab the debugger via the Debugger.getDebugger(context)
method or via the Main.getDebugger()
method - which returns null if it is not enabled.
You can enable or disable the debugger's logging dynamically, by calling the debugger's setEnable method.
Enabling from Main
To enable debugging from the main run
java org.apache.camel.spring.Main -x
or
java org.apache.camel.spring.Main -debug
and the debugger will be active.
Programmatically using the debugger
You can use the Spring org.apache.camel.spring.Main class directly to invoke your Camel routes using a spring XML file using debug as the following test case...
The Debugger can also be added to the routes as an interceptor as the following unit test below demonstrates:
About the Debugger
The Debugger has access to every single DebugInterceptor for each node in the Camel EIP route. You can look up the individual interceptor by the Node ID where you can access
- the Breakpoint object
- the list of Exchanges sent to this node
- the Predicate used to determine if messages are logged to the list
Accessing the Route Definitions
You can easily access all of the available route definitions from the Main instance via the getRouteDefinitions() method.
List<RouteType> routes = main.getRouteDefinitions();
you can then navigate the route and see its inputs and outputs etc