You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

ControlBus Component

Available as of Camel 2.11

The controlbus: component provides direct, synchronous invocation of any consumers when a producer sends a message exchange.
This endpoint can be used to connect existing routes in the same camel context.

controlbus:command[?options]

Where command can be any string to identify which type of command to use.

Commands

Unknown macro: {div}

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

Unknown macro: {div}

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=start", null);

To get the status of the route you can do:

String status = template.requestBody("controlbus:route?routeId=foo&action=status", 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

  • No labels