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

Compare with Current View Page History

« Previous Version 7 Next »

Paho Component

 

Available as of Camel 2.16 

Paho component provides connector for the MQTT messaging protocol using the Paho library.

Adding the component to the project

Maven users will need to add the following dependency to their pom.xml for this component:

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-paho</artifactId>
    <version>x.y.z</version>
    <!-- use the same version as your Camel core version -->
</dependency>

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:

<repositories>
  <repository>
    <id>eclipse-paho</id>
    <url>https://repo.eclipse.org/content/repositories/paho-releases</url>
    <snapshots>
      <enabled>false</enabled>
    </snapshots>
  </repository>
</repositories>

Default payload type

By default Camel Paho component operates on the binary payloads extracted out of or put into the MQTT message:

 

// Receive payload
byte[] payload = (byte[]) consumerTemplate.receiveBody("paho:topic");
 
// Send payload
byte[] payload = "message".getBytes();
producerTemplate.sendBody("paho:topic", payload);

But of course Camel can perform the automatic data type conversions for you:

// Receive payload
String payload = consumerTemplate.receiveBody("paho:topic", String.class);
 
// Send payload
String payload = "message";
producerTemplate.sendBody("paho:topic", payload);

URI format

paho:queueName[?options]

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

URI Options

Option

Default

Description

clientIdcamel-<timestamp>MQTT client identifier.

brokerUrl

tcp://localhost:1883

The URL of the MQTT broker.

persistencememoryClient persistence to be used - memory or file.
qos2Client quality of service level (0-2).
connectOptionsnoneThe 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.

Headers

The following headers are recognized by the Paho component:

Header

Java constant

Endpoint typeValue type

Description

PahoOriginalMessagePahoConstants.HEADER_ORIGINAL_MESSAGEConsumerorg.eclipse.paho.client.mqttv3.MqttMessageThe original Paho message instance received by the client.

Examples

Read messages from the MQTT broker installed on the same host as the Camel router:

from("paho:some/queue").
  to("mock:test");

Read messages from the remote MQTT broker: 

from("paho:some/queue?brokerUrl=tcp://iot.eclipse.org:1883").
  to("mock:test");

Send message to the MQTT broker:

from("direct:test").
  to("paho:some/target/queue");


  • No labels