MQTT
MQTT (Message Queue Telemetry Transport) is a message protocol based on TCP. It is open, simple and designed to be implemented easily.
MQTT is characterized by low overheads in the communication, but provides stable message delivery nonetheless. With these properties, it is ideal for use in many situations including limited environments, such as for communicating in machine-to-machine (M2M) and Internet of Things (IoT) contexts with low, limited or expensive network bandwidth, but where information should be provided or consumed regularly despite this.
Practical areas of use, where MQTT is already well used, include "Track & Trace" applications that record a wide variety of readings (e.g. temperatures, rotations, water levels etc.). The devices can range from single-board computers (SoC), for example a Raspberry Pi, which has been extended with GPIO to include the corresponding sensors, to smartphones that provide the corresponding values on a mobile basis, to industrial production plants whose production or hardware status is to be monitored.
An MQTT client can act as a "Listener", which listens to messages from other MQTT clients, or as a "Publisher", which sends messages.
The mapping of the messages is organized into channels, so-called "topics", this means that in the simplest scenarios, two MQTT clients can "talk" when the same topic is selected for both of them.
In this simple scenario, this can be enough to receive reports about the water levels in a hydroelectric facility on your smartphone, for example. However, as soon as multiple clients are involved and there are various topics available, or also in use, or access needs to be made secure accordingly, a so-called "Broker", meaning an MQTT server, is a good solution. This also offers the option of integrating further protocols, such as JMS (Java Messaging Service).