This site contains the documentation that is relevant to older WSO2 product versions and offerings.
For the latest WSO2 documentation, visit https://wso2.com/documentation/.

Skip to end of metadata
Go to start of metadata

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

Compare with Current View Page History

« Previous Version 8 Next »

Introduction

This sample demonstrates how the MQTT Connector publishes the message on a particular topic and how the MQTT client which is subscribes to that topic receives it.

Prerequisites

  • axis2-transport-mqtt-1.0.0.jar
  • mqtt-client-0.4.0.jar
  • mqtt-connector-1.0.0.zip
  • mosquitto-1.3.4

Building the Configuration

For Consumer ESB 

Download wso2esb-4.9.0-BETA-SNAPSHOT and do the following configuration changes.

Download the following client libraries to <ESB_HOME>/repository/components/lib directory.

  • axis2-transport-mqtt-1.0.0.jar
  • mqtt-client-0.4.0.jar

Enable the transport receiver and sender in <ESB_HOME>/repository/conf/axis2

Transport Receiver and Sender
<transportreceiver class="org.apache.axis2.transport.mqtt.MqttListener" name="mqtt">
        <parameter locked="false" name="mqttConFactory">
                <parameter locked="false" name="mqtt.server.host.name">localhost</parameter>
                            <parameter name="mqtt.connection.factory">mqttConFactory</parameter>
                <parameter locked="false" name="mqtt.server.port">1883</parameter>
                <parameter locked="false" name="mqtt.client.id">client-id.1430394313438</parameter>
                <parameter locked="false" name="mqtt.topic.name">esb.test2</parameter>
        </parameter>
    </transportreceiver>


<transportsender class="org.apache.axis2.transport.mqtt.MqttSender" name="mqtt">
</transportsender>

Add the XML configuration for the inbound endpoint as follows:

Insequence
<?xml version="1.0" encoding="UTF-8"?>
<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="mqtt.client.id">client-id.143094112027</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
<?xml version="1.0" encoding="UTF-8"?>
<sequence xmlns="http://ws.apache.org/ns/synapse" name="TestIn">
   <log level="full"/>
   <drop/>
</sequence>
For Publisher ESB 

Download wso2esb-4.9.0-BETA-SNAPSHOT and do the following configuration changes.

Upload the mqtt-connector-1.0.0.zip to esb. 

Add the following proxy and local entries.

Proxy
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="mqttXML"
       transports="https http"
       startOnLoad="true"
       trace="disable">
   <description/>
   <target>
      <inSequence>
         <property name="msg" expression="//msg"/>
         <mqtt.publish configKey="xxx">
            <topic>esb.test2</topic>
            <qos>2</qos>
            <msg>{$ctx:msg}</msg>
            <retained>true</retained>
            <disconnectAfter>false</disconnectAfter>
         </mqtt.publish>
         <respond/>
      </inSequence>
      <outSequence/>
      <faultSequence/>
   </target>
</proxy>
Local Entry
<?xml version="1.0" encoding="UTF-8"?>
<localEntry xmlns="http://ws.apache.org/ns/synapse" key="xxx">
   <mqtt.init>
      <hostName>localhost</hostName>
      <port>1883</port>
      <sslEnable>false</sslEnable>
      <asyncClientEnable>true</asyncClientEnable>
      <username>admin</username>
      <password>0777</password>
      <lwMessage>lwMSG</lwMessage>
   </mqtt.init>
   <description/>
</localEntry>

If you want to use the mosquito publisher you can start simply by typing the following in the console.

mosquitto_pub -h 127.0.0.1 -t esb.test2 -m "<msg><a>Testing123</a></msg>"

Executing the Request

Now once you are done with the configurations start the consumer and publisher ESBs. Start the mosquitto subscriber using  

mosquitto_sub -h 127.0.0.1 -t esb.test2

Then give the following request to the proxy endpoint.

Proxy

In the console you can see the following.

Publisher Console

Subscriber Console

Mosquitto subscriber

  • No labels