ControlBus Component
Available as of Camel 2.11
The controlbus: component provides easy management of Camel applications based on the Control Bus EIP pattern.
For example by sending a message to an Endpoint you can control the lifecycle of routes, or gather performance statistics.
controlbus:command[?options]
Where command can be any string to identify which type of command to use.
Commands
Command |
Description |
route |
To control routes using the routeId and action parameter. |
language |
Allows to specify a Language to use for evaluating the message body. If there is any result from the evaluation, then the result is put on the message body. |
Options
Name |
Default Value |
Description |
routeId |
null |
To specify a route by its id. |
action |
null |
To denote an action which can be either: start, stop, or status. To either start or stop a route. Og get the status of the route as output to the message body. |
You can append query options to the URI in the following format, ?option=value&option=value&...
Samples
Using route command
The route command allows to do common tasks on a given route very easily, for example to start a route you can send a empty message to this endpoint:
template.sendBody("controlbus:route?routeId=foo&action="">, null);
To get the status of the route you can do:
String status = template.requestBody("controlbus:route?routeId=foo&action="">, null, String.class);
Using Simple language
You can use Simple language with the control bus, for example to stop a specific route you can send a message to the "controlbus:language:simple" endpoint containing the following message:
template.sendBody("controlbus:language:simple", "${camelContext.stopRoute('myRoute')}");
As this operation is a void operation, then no result is returned. However if you want the route status you can do:
String status = template.requestBody("controlbus:language:simple", "${camelContext.getRouteStatus('myRoute')}", String.class);
![]() | You can also use other languages such as Groovy etc. |
See Also