MQTT
MQTT (Message Queue Telemetry Transport) is a messaging protocol based on TCP. It is open, simple, and designed to be easy to implement.
MQTT is characterized by low communication overhead, yet still provides reliable message delivery. This makes it suitable for machine-to-machine (M2M) and Internet of Things (IoT) applications, in which devices are connected via low, limited, or costly bandwidth but are still expected to regularly send or receive information.
Practical applications in which MQTT is already widely used include "track and trace" applications that collect a wide variety of measurement values (e.g., temperatures, rotational speeds, water levels, etc.). These devices can range from single-board computers (SoCs)—such as a Raspberry Pi that has been expanded with GPIO to support relevant sensors—to smartphones that provide the relevant data on the go, and even industrial manufacturing systems whose production or hardware status needs to be monitored.
An MQTT client can act as a "listener"—that is, a participant that listens for messages from other MQTT clients—or as a "publisher"—that is, a participant that sends messages.
Messages are organized into channels, known as "topics"; in other words, in the simplest case, for two MQTT clients to "communicate" with each other, they must both select the same topic.
In the simplest scenario, this may be enough, for example, to receive regular reports on the water level at a hydroelectric power plant via smartphone. However, as soon as there are multiple clients involved and different topic threads exist or are to be used, or if access needs to be secured accordingly, it makes sense to use a so-called "broker," that is, an MQTT server. It also offers the option to integrate additional protocols, such as JMS (Java Messaging Service).