1. Start with the message
Telemetry, alarms, commands, and billing records do not need the same delivery guarantee.
Compare MQTT QoS 0, QoS 1, and QoS 2 delivery guarantees, overhead, retry behavior, and subscriber QoS caps.
Choose a message scenario, step through the MQTT packet exchange, and see how QoS changes delivery confidence, overhead, duplicate risk, and subscriber delivery.
Telemetry, alarms, commands, and billing records do not need the same delivery guarantee.
QoS 0 uses one PUBLISH, QoS 1 adds PUBACK, and QoS 2 uses PUBLISH, PUBREC, PUBREL, PUBCOMP.
Lost publishes, lost acknowledgements, and reconnects change what the protocol can promise.
The delivery to a subscriber is capped by the subscriber's requested maximum QoS.
Use Play or Step to trace the selected QoS exchange. The packet label, active stage, and diagnosis update together.
The sender retries until PUBACK is received, so duplicates are possible.
Two packets are normal on the publisher-broker hop.
Publisher QoS 1 and subscriber maximum QoS 1 produce QoS 1 delivery.
This scenario needs confirmation, and duplicate-safe application handling is acceptable.
One PUBLISH packet. There is no acknowledgement, no retry, and no protocol evidence that the broker received the message.
PUBLISH plus PUBACK. Retransmission protects delivery but can duplicate the application message.
PUBLISH, PUBREC, PUBREL, and PUBCOMP coordinate state so that this MQTT hop does not deliver duplicates.
QoS 0 PUBLISH has no Packet Identifier. QoS 1 and QoS 2 use one so acknowledgements match in-flight messages.
A broker forwards at no higher QoS than the subscriber requested, even when the original publish used a higher QoS.
QoS confirms MQTT delivery semantics. It does not prove a lock moved, a valve closed, or a business action committed.
If a temperature value arrives every second and the next value replaces the previous one, QoS 0 is often enough.
A smoke alarm event usually needs QoS 1 plus an idempotent alert handler so repeated delivery is harmless.
Meter records and financial events may justify QoS 2, but the application database still needs transaction safety.