Table of Contents

What is MQTT

… see Wikipedia

… see https://www.hivemq.com/blog/mqtt-essentials-part-1-introducing-mqtt

… see https://blog.doubleslash.de/mqtt-fuer-dummies/

MQTT Data Flow by Examples

Based on this image the following examples can show typical data flows

Example: 1 Publisher, no Subscriber

If Client X publishes any data with Topic 1 and nobody is listening (nobody has subscriped Topic 1) the data is lost.

(Exception: see Topics with Retain Flag)

Example: 1 Publisher, 1 Subscriber

If Client A publishes any data with Topic 2 and Client B is notified instantly about change of Topic 2.

Example: Many Publisher, Many Subscriber

Any Client can publish any data with any Topic at anytime. The subscribing Clients are notified instantly about change of the Topics they subscripes and only that.

Example: Many Publisher, 1 Subscriber with Wildcard

Any Client can publish any data with any Topic at anytime. A Client can subcripe with '+' and/or '#' in the Topic name. The Client is notified instantly about any change of all Topics which matches the wildcard Topic name.

Example: Request and Answer

Every Client can be publisher and subscriber. For sneding a request/command one Topic can be used. For the answer an other Topic is used.

Note: This can be solved with only one Tpoic but the publisher would receive his own request/command.

Example: QoS-Flag - Quality of Service

A Client can publish data with any Topic with flag QoS set. This garantees that the data arrives the broker.

A Client can subscripe with flag QoS set. This garantees that the data arrives the clinet.

QoSMeaning
0no garantee (default)
1garantee that data arrives
2garantee that data arrives only once

Note: Each publisher and each subscriber can user the QoS flag without affecting the others.

Example: Remain-Flag

Ages ago: A Client publish any data with a Topic and Remain flag set. The broker stores the Topic with data in its own database/file. The publishing Client died…

Now: An other Client ist started and subscripes a Topic. The Client is notified instantly about the stored data of the Topic

RemainMeaning
0fire and forget
1saved on broker

Topic Wording

There is no law that you have to name your topics in a special way. So the following names are (principle) correct:

But there are some guidelines for names that all clinets can filter and handle subscriptions in an easy way:

So the recommented name is:

Subscription Wildcard Examples

Exact Match

On subscribing “/MyHome/Kitchen/Temperature” you get:

# Wildcard

On subscribing “/#“ you get:

On subscribing ”/MyHome/#“ you get:

On subscribing ”/MyHome/Kitchen/#“ you get:

+ Wildcard

On subscribing ”/MyHome/+/Temperature” you get:

On subscribing “/+/+/Temperature” you get:

On subscribing “/+/+/+/Temperature” you get: