Introduction
This sample demonstrates how the MQTT connector publishes a message on a particular topic and how a MQTT client that is subscribed to that topic receives it.
Prerequisites
- You need to have the following downloaded.
- axis2-transport-mqtt-1.0.0.jar
- mqtt-client-0.4.0.jar
- mqtt-connector-1.0.0.zip
- mosquitto-1.3.4 (http://mosquitto.org/)
Building the sample
For consumer ESB
- Copy the following client libraries to the
<
ESB_HOME>/repository/components/lib
directory.- axis2-transport-mqtt-1.0.0.jar
- mqtt-client-0.4.0.jar
Add the XML configuration for the inbound endpoint as follows:
Insequence<inboundEndpoint xmlns="http://ws.apache.org/ns/synapse" name="test" sequence="TestIn" onError="TestIn" protocol="mqtt" suspend="false"> <parameters> <parameter name="sequential">true</parameter> <parameter name="mqtt.connection.factory">mqttFactory</parameter> <parameter name="mqtt.server.host.name">localhost</parameter> <parameter name="mqtt.server.port">1883</parameter> <parameter name="mqtt.topic.name">esb.test2</parameter> <parameter name="mqtt.subscription.qos">2</parameter> <parameter name="content.type">application/xml</parameter> <parameter name="mqtt.session.clean">false</parameter> <parameter name="mqtt.ssl.enable">false</parameter> <parameter name="mqtt.subscription.username">elil1</parameter> <parameter name="mqtt.subscription.password">e13</parameter> <parameter name="mqtt.temporary.store.directory">my</parameter> <parameter name="mqtt.blocking.sender">false</parameter> </parameters> </inboundEndpoint>
TestIn<sequence xmlns="http://ws.apache.org/ns/synapse" name="TestIn"> <log level="full"/> <drop/> </sequence>
For publisher ESB
Run the following command to use the mosquito publisher:
mosquitto_pub -h 127.0.0.1 -t esb.test2 -m "<msg><a>Testing123</a></msg>"
Executing the request
After you perform the required configuration changes,
- Start the ESB and the mosquito publisher.
Start the mosquitto subscriber by executing the following command:
mosquitto_sub -h 127.0.0.1 -t esb.test2
Analyzing the output
On the console you will see the following: