In MQTT, QoS is chosen by the publisher for each message and separately by each subscriber for each subscription, and the broker delivers at the lower of the two. QoS 0 is fire and forget: one packet, no acknowledgment. QoS 1 waits for an acknowledgment and retransmits, so duplicates are possible. QoS 2 uses a four-step handshake to guarantee a single delivery.
The levels trade bandwidth, latency and client-side state against certainty. A temperature reading every ten seconds can use QoS 0, because the next one will arrive anyway, while a billing event or an alarm might justify QoS 1 with idempotent handling on the receiver. QoS 2 is rarely needed and expensive on constrained links. In DDS the same term covers a much broader set of policies, including deadlines and durability. See MQTT explained.
Part of the IoT Glossary. Spotted an error or a missing term? Tell us.