Fuse 6 is no longer supported
As of February 2025, Red Hat Fuse 6 is no longer supported. If you are using Fuse 6, please upgrade to Red Hat build of Apache Camel.Questo contenuto non è disponibile nella lingua selezionata.
Chapter 123. Paho
Paho Component Copia collegamentoCollegamento copiato negli appunti!
Copia collegamentoCollegamento copiato negli appunti!
Paho component provides connector for the MQTT messaging protocol using the Eclipse Paho library. Paho is one of the most popular MQTT libraries, so if you would like to integrate it with your Java project - Camel Paho connector is a way to go.
URI format Copia collegamentoCollegamento copiato negli appunti!
Copia collegamentoCollegamento copiato negli appunti!
paho:queueName[?options]
paho:queueName[?options]
For example the following snippet reads messages from the MQTT broker installed on the same host as the Camel router:
from("paho:some/queue").
to("mock:test");
from("paho:some/queue").
to("mock:test");
While the snippet below sends message to the MQTT broker:
from("direct:test").
to("paho:some/target/queue");
from("direct:test").
to("paho:some/target/queue");
You can append query options to the URI in the following format:
?option=value&option=value&... . For example this is how to read messages from the remote MQTT broker:
from("paho:some/queue?brokerUrl=tcp://iot.eclipse.org:1883").
to("mock:test");
from("paho:some/queue?brokerUrl=tcp://iot.eclipse.org:1883").
to("mock:test");
Adding the component to the project Copia collegamentoCollegamento copiato negli appunti!
Copia collegamentoCollegamento copiato negli appunti!
Maven users will need to add the following dependency to their
pom.xml for this component:
Keep in mind that Paho artifacts are not hosted in the Maven Central, so you need to add Eclipse Paho repository to your POM xml file:
Default payload type Copia collegamentoCollegamento copiato negli appunti!
Copia collegamentoCollegamento copiato negli appunti!
By default Camel Paho component operates on the binary payloads extracted out of (or put into) the MQTT message:
But of course Camel build-in type conversion API can perform the automatic data type transformations for you. In the example below Camel automatically converts binary payload into String (and conversely):
URI Options Copia collegamentoCollegamento copiato negli appunti!
Copia collegamentoCollegamento copiato negli appunti!
|
Option
|
Default
|
Description
|
|---|---|---|
clientId
|
camel-<timestamp>
|
MQTT client identifier. |
brokerUrl
|
tcp://localhost:1883
|
The URL of the MQTT broker.
|
persistence
|
memory
|
Client persistence to be used - memory or file.
|
filePersistenceDirectory
|
current directory | (Camel 2.16.1 and 2.17) Base directory used by file persistence. Takes no effect if non-file persistence is used. |
qos
|
2 |
Client quality of service level (0-2).
|
connectOptions
|
none |
The reference to the org.eclipse.paho.client.mqttv3.MqttConnectOptions instance located in the Camel registry. Referenced MqttConnectOptions instance will be used by the endpoint to initialize the connection. For example connectOptions=#myConnectOptions notation can be used to reference Spring bean named myConnectOptions. If there is only a single instance of the MqttConnectOptions in the registry, it will be automatically picked up by the endpoint.
|
For example the convention-over-configuration approach used in Camel is really handy for the most of the situations, but sometimes you would like to have more fine-grained control over the MQTT client connection. To cover such situations just add the bean of type
org.eclipse.paho.client.mqttv3.MqttConnectOptions to your Camel registry. For Spring applications that would means adding bean to your application context. The snippet below uses password-based authentication to connect to the MQTT broker:
Headers Copia collegamentoCollegamento copiato negli appunti!
Copia collegamentoCollegamento copiato negli appunti!
The following headers are recognized by the Paho component:
|
Header
|
Java constant
| Endpoint type | Value type |
Description
|
|---|---|---|---|---|
PahoOriginalMessage
|
PahoConstants.HEADER_ORIGINAL_MESSAGE
|
Consumer |
org.eclipse.paho.client.mqttv3.MqttMessage
|
The original Paho message instance received by the client.
Deprecated: from Camel 2.17 onwards the original MqttMessage is not stored as a header but on the
org.apache.camel.component.paho.PahoMessage message that has a getter getMqttMessage.
|
CamelMqttTopic
|
PahoConstants.MQTT_TOPIC | Consumer | String | Camel 2.17: The topic |