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 application in which MQTT is already widely used are "Track & Trace" applications that record a wide variety of measured values (e.g. temperatures, speeds, 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", i.e. a participant that listens to messages from other MQTT clients, or as a "publisher", i.e. a participant that sends messages.
The assignment of messages is divided into channels, so-called "topics", i.e. so that in the simplest case two MQTT clients can "talk", the same topic is selected for both.
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 several clients are involved and different topic strings exist or are to be used or access is to be secured accordingly, it is advisable to use a so-called "broker", i.e. an MQTT server. This also offers the option of integrating further protocols, such as JMS (Java Messaging Service).