[[controlbus-component]]
= Control Bus Component
:page-source: components/camel-controlbus/src/main/docs/controlbus-component.adoc

*Available as of Camel version 2.11*

The http://www.eaipatterns.com/ControlBus.html[Control Bus] from the
EIP patterns allows for the
integration system to be monitored and managed from within the
framework.

image::control_bus.png[image]

Use a Control Bus to manage an enterprise integration system. The
Control Bus uses the same messaging mechanism used by the application
data, but uses separate channels to transmit data that is relevant to
the management of components involved in the message flow.

In Camel you can manage and monitor using JMX, or
by using a Java API from the `CamelContext`, or from the
`org.apache.camel.api.management` package, +
 or use the event notifier which has an example
here.

The ControlBus component provides easy management of Camel
applications based on the xref:controlbus-component.adoc[Control Bus] EIP
pattern. 
For example, by sending a message to an Endpoint
you can control the lifecycle of routes, or gather performance
statistics.

[source]
----
controlbus:command[?options]
----

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

== Commands

[width="100%",cols="10%,90%",options="header",]
|===
|Command |Description

|`route` |To control routes using the `routeId` and `action` parameter.

|`language` |Allows you to specify a xref:language-component.adoc[Language] to use for
evaluating the message body. If there is any result from the evaluation,
then the result is put in the message body.
|===

== Options


// component options: START
The Control Bus component supports 1 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *basicPropertyBinding* (advanced) | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
|===
// component options: END



// endpoint options: START
The Control Bus endpoint is configured using URI syntax:

----
controlbus:command:language
----

with the following path and query parameters:

=== Path Parameters (2 parameters):


[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *command* | *Required* Command can be either route or language |  | String
| *language* | Allows you to specify the name of a Language to use for evaluating the message body. If there is any result from the evaluation, then the result is put in the message body. |  | Language
|===


=== Query Parameters (8 parameters):


[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *action* (producer) | To denote an action that can be either: start, stop, or status. To either start or stop a route, or to get the status of the route as output in the message body. You can use suspend and resume from Camel 2.11.1 onwards to either suspend or resume a route. And from Camel 2.11.1 onwards you can use stats to get performance statics returned in XML format; the routeId option can be used to define which route to get the performance stats for, if routeId is not defined, then you get statistics for the entire CamelContext. The restart action will restart the route. |  | String
| *async* (producer) | Whether to execute the control bus task asynchronously. Important: If this option is enabled, then any result from the task is not set on the Exchange. This is only possible if executing tasks synchronously. | false | boolean
| *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | boolean
| *loggingLevel* (producer) | Logging level used for logging when task is done, or if any exceptions occurred during processing the task. | INFO | LoggingLevel
| *restartDelay* (producer) | The delay in millis to use when restarting a route. | 1000 | int
| *routeId* (producer) | To specify a route by its id. The special keyword current indicates the current route. |  | String
| *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
|===
// endpoint options: END


You can append query options to the URI in the following format,
`?option=value&option=value&...`

// spring-boot-auto-configure options: START
== Spring Boot Auto-Configuration

When using Spring Boot make sure to use the following Maven dependency to have support for auto configuration:

[source,xml]
----
<dependency>
  <groupId>org.apache.camel</groupId>
  <artifactId>camel-controlbus-starter</artifactId>
  <version>x.x.x</version>
  <!-- use the same version as your Camel core version -->
</dependency>
----


The component supports 2 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *camel.component.controlbus.basic-property-binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | Boolean
| *camel.component.controlbus.enabled* | Whether to enable auto configuration of the controlbus component. This is enabled by default. |  | Boolean
|===
// spring-boot-auto-configure options: END


== Using route command

The route command allows you to do common tasks on a given route very
easily, for example to start a route, you can send an empty message to
this endpoint:

[source,java]
----
template.sendBody("controlbus:route?routeId=foo&action=start", null);
----

To get the status of the route, you can do:

[source,java]
----
String status = template.requestBody("controlbus:route?routeId=foo&action=status", null, String.class);
----

[[ControlBus-Gettingperformancestatistics]]
== Getting performance statistics

*Available as of Camel 2.11.1*

This requires JMX to be enabled (is by default) then you can get the
performance statics per route, or for the
CamelContext. For example to get the statics for
a route named foo, we can do:

[source,java]
----
String xml = template.requestBody("controlbus:route?routeId=foo&action=stats", null, String.class);
----

The returned statics is in XML format. Its the same data you can get
from JMX with the `dumpRouteStatsAsXml` operation on the
`ManagedRouteMBean`.

To get statics for the entire CamelContext you
just omit the routeId parameter as shown below:

[source,java]
----
String xml = template.requestBody("controlbus:route?action=stats", null, String.class);
----

== Using Simple language

You can use the xref:manual::simple-language.adoc[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:

[source,java]
----
template.sendBody("controlbus:language:simple", "${camelContext.getRouteController().stopRoute('myRoute')}");
----

As this is a void operation, no result is returned. However, if you want
the route status you can do:

[source,java]
----
String status = template.requestBody("controlbus:language:simple", "${camelContext.getRouteStatus('myRoute')}", String.class);
----

It's easier to use the `route` command to control lifecycle of
routes. The `language` command allows you to execute a language script
that has stronger powers such as xref:groovy-language.adoc[Groovy] or to some
extend the xref:manual::simple-language.adoc[Simple] language.

For example to shutdown Camel itself you can do:

[source,java]
----
template.sendBody("controlbus:language:simple?async=true", "${camelContext.stop()}");
----

We use `async=true` to stop Camel asynchronously as otherwise we
would be trying to stop Camel while it was in-flight processing the
message we sent to the control bus component.

TIP: You can also use other languages such as xref:groovy-language.adoc[Groovy], etc.
