Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Wiki Markup
h2. MQTT Component

The *mqtt:* component is used for communicating with [MQTT|http://mqtt.org] compliant message brokers, like [Apache ActiveMQ|http://activemq.apache.org] or [Mosquitto|http://mosquitto.org]

Camel will poll the feed every 60 seconds by default.
*Note:* The component currently only supports polling (consuming) feeds.

Maven users will need to add the following dependency to their {{pom.xml}} for this component:
{code:xml}
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-mqtt</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>
{code}

h3. URI format

{code}
mqtt://name[?options]
{code}

Where *name* is the name you want to assign the component.

h3. Options
{div:class=confluenceTableSmall}
|| Property || Default || Description ||
| {{host}} | {{tcp://127.0.0.1:1883}} | The URI of the MQTT broker to connect too - this component also supports SSL - e.g. _ssl://127.0.0.1:8883_|
| {{localAddress}} | | The local InetAddress and port to use |
| {{connectAttemptsMax}} | {{-1}} | The maximum number of attempts to establish an initial connection - *_-1_* in infinite. |
| {{reconnectAttemptsMax}} | {{-1}} | The maximum number of attempts to re-establish a connection after failure - *_-1_* in infinite. |
| {{reconnectDelay}} | {{10}} | The time in milliseconds between attempts to reestablish an initial or failed connection |
| {{reconnectBackOffMultiplier}} | {{2.0}} | The multiplier to use to the delay between connection attempts for successive failed connection attempts |
| {{reconnectDelayMax}} | {{30000}} | The maximum time in milliseconds between a new attempt to establish a connection. So even using the reconnectBackOffMultiplier, this property will define the maximum delay before another connection attempt to the MQTT broker  |
| {{QoS}} | {{AtLeastOnce}} | The MQTT Quality of Service to use for message exchanges. It can be one of *AtMostOnce*, *AtLeastOnce* or *ExactlyOnce* |
| {{subscribeTopicName}} | |  The name of the Topic to subscribe to for messages |
| {{publishTopicName}} | {{_camel/mqtt/test_}} | The default Topic to publish messages on | 
| {{byDefaultRetain}} | {{false}} | The default retain policy to be used on messages sent to the MQTT broker|
| {{mqttTopicPropertyName}} | {{_MQTTTopicPropertyName+}} | The property name to look for on an Exchange for an individual published message. If this is set - the name will be used as the Topic to publish a message to the MQTT message broker. |
| {{mqttRetainPropertyName}} | {{MQTTRetain}} | The property name to look for on an Exchange for an individual published message. If this is set (expects a Boolean value) - then the retain property will be set on the message sent to the MQTT message broker. |
| {{mqttQosPropertyName}} | {{MQTTQos}} | The property name to look for on an Exchange for an individual published message. If this is set (one of *AtMostOnce*, *AtLeastOnce* or *ExactlyOnce*  ) - then that QoS will be set on the message sent to the MQTT message broker. |
| {{connectWaitInSeconds}} | {{10}} | Delay in seconds the Component will wait for a connection to be established to the MQTT broker |
| {{disconnectWaitInSeconds}} | {{5}} |the number of seconds the Component will wait for a valid disconnect on stop() from the MQTT broker |
| {{sendWaitInSeconds}} | {{5}} | The maximum time the Component will wait for a receipt from the MQTT broker to acknowledge a published message before throwing an exception|
{div}

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


h3. Samples

Sending messages:
{code}
from("direct:foo").to("mqtt:cheese?publishTopicName=test.mqtt.topic");
{code}

Consuming messages:
{code}
from("mqtt:bar?subscribeTopicName=test.mqtt.topic").transform(body().convertToString()).to("mock:result")
{code}


{include:Endpoint}