JMX
Since Camel 2.6
Only consumer is supported
Apache Camel has extensive support for JMX to allow you to monitor and control the Camel managed objects with a JMX client.
Camel also provides a JMX component that allows you to subscribe to MBean notifications. This page is about how to manage and monitor Camel using JMX.
If you run Camel standalone with just |
Configuring Options
Camel components are configured on two separate levels:
-
component level
-
endpoint level
Configuring Component Options
The component level is the highest level which holds general and common configurations that are inherited by the endpoints. For example a component may have security settings, credentials for authentication, urls for network connection and so forth.
Some components only have a few options, and others may have many. Because components typically have pre configured defaults that are commonly used, then you may often only need to configure a few options on a component; or none at all.
Configuring components can be done with the Component DSL, in a configuration file (application.properties|yaml), or directly with Java code.
Configuring Endpoint Options
Where you find yourself configuring the most is on endpoints, as endpoints often have many options, which allows you to configure what you need the endpoint to do. The options are also categorized into whether the endpoint is used as consumer (from) or as a producer (to), or used for both.
Configuring endpoints is most often done directly in the endpoint URI as path and query parameters. You can also use the Endpoint DSL and DataFormat DSL as a type safe way of configuring endpoints and data formats in Java.
A good practice when configuring options is to use Property Placeholders, which allows to not hardcode urls, port numbers, sensitive information, and other settings. In other words placeholders allows to externalize the configuration from your code, and gives more flexibility and reuse.
The following two sections lists all the options, firstly for the component followed by the endpoint.
Component Options
The JMX component supports 2 options, which are listed below.
Name | Description | Default | Type |
---|---|---|---|
Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean | |
Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc. | true | boolean |
Endpoint Options
The JMX endpoint is configured using URI syntax:
jmx:serverURL
with the following path and query parameters:
Query Parameters (29 parameters)
Name | Description | Default | Type |
---|---|---|---|
Format for the message body. Either xml or raw. If xml, the notification is serialized to xml. If raw, then the raw java object is set as the body. Enum values:
| xml | String | |
The frequency to poll the bean to check the monitor (monitor types only). | 10000 | long | |
The type of monitor to create. One of string, gauge, counter (monitor types only). Enum values:
| String | ||
Required The domain for the mbean you’re connecting to. | String | ||
The name key for the mbean you’re connecting to. This value is mutually exclusive with the object properties that get passed. | String | ||
The attribute to observe for the monitor bean or consumer. | String | ||
Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean | |
To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | ExceptionHandler | ||
Sets the exchange pattern when the consumer creates an exchange. Enum values:
| ExchangePattern | ||
To use a custom shared thread pool for the consumers. By default each consume has their own thread-pool to process and route notifications. | ExecutorService | ||
Value to handback to the listener when a notification is received. This value will be put in the message header with the key JMXConstants#JMX_HANDBACK. | Object | ||
Reference to a bean that implements the NotificationFilter. | NotificationFilter | ||
Properties for the object name. These values will be used if the objectName param is not set. | Map | ||
The number of seconds to wait before attempting to retry establishment of the initial connection or attempt to reconnect a lost connection. | 10 | int | |
If true the consumer will attempt to reconnect to the JMX server when any connection failure occurs. The consumer will attempt to re-establish the JMX connection every 'x' seconds until the connection is made-- where 'x' is the configured reconnectionDelay. | false | boolean | |
If true the consumer will throw an exception if unable to establish the JMX connection upon startup. If false, the consumer will attempt to establish the JMX connection every 'x' seconds until the connection is made — where 'x' is the configured reconnectionDelay. | true | boolean | |
Initial threshold for the monitor. The value must exceed this before notifications are fired (counter monitor only). | int | ||
The value at which the counter is reset to zero (counter monitor only). | int | ||
The amount to increment the threshold after it’s been exceeded (counter monitor only). | int | ||
If true, then the value reported in the notification is the difference from the threshold as opposed to the value itself (counter and gauge monitor only). | false | boolean | |
If true, the gauge will fire a notification when the high threshold is exceeded (gauge monitor only). | false | boolean | |
If true, the gauge will fire a notification when the low threshold is exceeded (gauge monitor only). | false | boolean | |
Value for the gauge’s high threshold (gauge monitor only). | Double | ||
Value for the gauge’s low threshold (gauge monitor only). | Double | ||
Credentials for making a remote connection. | String | ||
Credentials for making a remote connection. | String | ||
If true, will fire a notification when the string attribute differs from the string to compare (string monitor or consumer). By default the consumer will notify match if observed attribute and string to compare has been configured. | false | boolean | |
If true, will fire a notification when the string attribute matches the string to compare (string monitor or consumer). By default the consumer will notify match if observed attribute and string to compare has been configured. | false | boolean | |
Value for attribute to compare (string monitor or consumer). By default the consumer will notify match if observed attribute and string to compare has been configured. | String |
Message Headers
The JMX component supports 1 message header(s), which is/are listed below:
Name | Description | Default | Type |
---|---|---|---|
Constant: | The handback. | Object |
Spring Boot Auto-Configuration
When using jmx with Spring Boot make sure to use the following Maven dependency to have support for auto configuration:
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-jmx-starter</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
The component supports 3 options, which are listed below.
Name | Description | Default | Type |
---|---|---|---|
Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc. | true | Boolean | |
Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | Boolean | |
Whether to enable auto configuration of the jmx component. This is enabled by default. | Boolean |