Paho API (MQTT Client) with Mosquitto broker and Spring WebSocket

What is MQTT Protocol

What is MQTT Protocol

MQTT(Message Queuing Telemetry Transport) is a publish-subscribe based light weight messaging protocol which works on top of TCP/IP protocol. Like HTTP and WebSocket protocol this MQTT works on top of TCP/IP protocol.

It is designed to establish communication among the devices without user intervention.Hence this protocol also called IoT protocol.

as a java developer we all know that publish subscribers messaging model (JMS) requires a broker. When we works with asynchronous messaging we generally user ActiveMQ or RabitMQ kind of messaging brokers. Similarly MQTT also requires messaging broker.

This broker is responsible for distributing messages to interested clients based on the topic of message. MQTT is a good choice for the wireless networks that experience varying levels of latency due to occasional bandwidth constraints or unreliable connections.

In messaging world we will have two types of destinations.

  • Topic(publish and subscriber model): published messages can be received by the many subscribes.This is like a broadcasting news. it doesn’t care message delivered to all the subscribes. similar to UDP protocol :)

  • Queue (point to point model): this is like private messages. sending specific point. and processed only once.If the message available in the queue until it delivered to the correct point(person)

MQTT Broker

There are several MQTT brokers available in the market such as EMqTT, Apoll , HiveMQ and Mosquitto. In this session we will work with Mosquitto broker. In a low level of MQTT protocol , MQTT defines some methods to indicate the desired action to be performed on the identified resource.

  • Connect : waits for a connection to be established with the server

  • Disconnect :Waits for the MQTT client to finish any work it must do, and for the TCP/IP session to disconnected.

  • Subscribe : Waits for the completion of the Subscribe method

  • Unsubscribe : Requests the server unsubscribe the client from one or more topics

  • Publish: Returns to the application thread after passing request to the MQTT client

The messages' payloads are just a sequence of bytes, up to 256MB, with a fixed header of two bytes to most messages. The clients can subscribe to these messages and get updated by the broker when new messages arrive. MQTT lets clients and brokers set a "Quality of Service" on messages basis from "fire and forget" to "confirmed delivery".

What is IoT

In general terms IoT is establishing communication between devices (hardware components) and collecting data from those devices and sending them to IT infrastructure to monitor and control those devices.

What is PAHO

MQTT is just a protocol and that needs some client API on different technologies to work which makes developers life ease. The Eclipse Paho project is part of the Eclipse Foundation’s M2M (Machine to Machine) mission to provide high quality implementations of M2M libraries and tools.

Note
Under the Paho banner, open source client libraries for MQTT are being developed. MQTT C and Java libraries with Lua, Python, C++ and JavaScript are at various stages of development. In this article we’ll be showing how to use the Paho Java MQTT libraries to publish and subscribe.

Download required software

I’m using mac to run this tutorial . if you have brew installed on your machine you can run simple command which installs mosquitto on machine.

mosquitto.sh
$/>sudo brew install mosquitto

Once the installation done run below command to start the broker To check the mosquitto working correctly. it provides Simple commands to send receive messages open new terminal windows run below command which creates simple listener

start.sh
To Install mosquitto on you mac machine
$/>sudo brew install mosquitto

#To start the mosquitto server
$/>mosquitto
1465109455: mosquitto version 1.4.8 (build date 2016-02-14 11:22:03-0800) starting
1465109455: Using default config.
1465109455: Opening ipv4 listen socket on port 1883. 1465109455: Opening ipv6 listen socket on port 1883.


#Run below command on new terminal window to this enables subscriber (receives messages)
#This is acts like real subscriber and useful to check mosquitto installed and running succesfully


$/>mosquitto_sub -t "#" -v

#Open another terminal and run below command which sends some sample text messages. those can available subscribers windows
$/>mosquitto_pub -t "topic/trvajjala" -m "This is my first telematry message on Mosquitto broker"


#Send another message with proirity
$/>mosquitto_pub -t "topic/trvajjala" -m "This is my second message to the mosquitto broker" -q 1 -v

So far we installed broker and sending and receiving simple messages from the terminal client. next we will send receive messages using MQTT Java API (Paho) .

XenQTT

XenQTT is an MQTT support library and application suite that offers clients powerful and innovative features for working in an MQTT-enabled ecosystem. These features help to address certain gaps and needs that have come up within this relatively new and increasingly popular communication protocol. XenQTT provides the following:

  • A Java MQTT client API that can be used both synchronously and asynchronously

  • A clustering proxy that allows a cluster of clients to act as a single MQTT client transparently

  • A mock MQTT broker that is useful for testing and debugging

  • An HTTP to MQTT gateway

Source code

Download source code from below link

checkout.sh
git clone https://github.com/go2andplay/simple-paho-client.git

Comments

Popular posts from this blog

IBM Datapower GatewayScript

Spring boot Kafka Integration

Spring boot SOAP Web Service Performance