The MQTT protocol defines three Quality of Service (QoS) levels to ensure reliable message delivery under different network conditions.
QoS 0 - At most once
- Features: Message delivered at most once, no delivery guarantee
- Acknowledgment: No acknowledgment required
- Use Cases: Stable network, scenarios where message loss is acceptable
- Pros: Minimal overhead, fastest transmission
- Cons: Possible message loss, no reliability guarantee
QoS 1 - At least once
- Features: Message delivered at least once, but may be duplicated
- Acknowledgment: PUBACK acknowledgment
- Flow:
- Publisher sends message (PUBLISH)
- Receiver confirms receipt (PUBACK)
- If publisher doesn't receive acknowledgment, message is resent
- Use Cases: Scenarios requiring guaranteed delivery but accepting duplicates
- Pros: Guarantees message delivery
- Cons: May produce duplicate messages
QoS 2 - Exactly once
- Features: Message delivered exactly once, no loss or duplication
- Acknowledgment: Two-phase acknowledgment (PUBREC + PUBREL + PUBCOMP)
- Flow:
- Publisher sends message (PUBLISH)
- Receiver confirms receipt (PUBREC)
- Publisher releases message (PUBREL)
- Receiver completes confirmation (PUBCOMP)
- Use Cases: Scenarios with extremely high reliability requirements, such as financial transactions
- Pros: Most reliable, guarantees no loss or duplication
- Cons: Highest overhead, slowest transmission
QoS Level Selection Guidelines
- QoS 0: Real-time sensor data, status updates where loss is acceptable
- QoS 1: General message notifications, logging where delivery is required
- QoS 2: Critical business data, payment commands, control commands where loss and duplication cannot be tolerated
Performance Comparison
| QoS Level | Message Overhead | Network Round Trips | Reliability | Use Cases |
|---|---|---|---|---|
| QoS 0 | Minimal | 1 | Low | Loss acceptable |
| QoS 1 | Medium | 2 | Medium | Delivery required |
| QoS 2 | Maximum | 4 | High | No loss or duplication |
In practical applications, the appropriate QoS level should be selected based on business requirements, network environment, and performance requirements.