blob: 9c7c44aae1393b44b2fff9bbe53fe5c1f6822daa [file] [log] [blame]
.TH "qos" 3 "Thu Sep 13 2018" "Paho MQTT C Client Library" \" -*- nroff -*-
.ad l
.nh
.SH NAME
qos \- Quality of service
The MQTT protocol provides three qualities of service for delivering messages between clients and servers: 'at most once', 'at least once' and 'exactly once'\&.
.PP
Quality of service (QoS) is an attribute of an individual message being published\&. An application sets the QoS for a specific message by setting the \fBMQTTClient_message\&.qos\fP field to the required value\&.
.PP
A subscribing client can set the maximum quality of service a server uses to send messages that match the client subscriptions\&. The \fBMQTTClient_subscribe()\fP and \fBMQTTClient_subscribeMany()\fP functions set this maximum\&. The QoS of a message forwarded to a subscriber thus might be different to the QoS given to the message by the original publisher\&. The lower of the two values is used to forward a message\&.
.PP
The three levels are:
.PP
\fBQoS0, At most once:\fP The message is delivered at most once, or it may not be delivered at all\&. Its delivery across the network is not acknowledged\&. The message is not stored\&. The message could be lost if the client is disconnected, or if the server fails\&. QoS0 is the fastest mode of transfer\&. It is sometimes called 'fire and forget'\&.
.PP
The MQTT protocol does not require servers to forward publications at QoS0 to a client\&. If the client is disconnected at the time the server receives the publication, the publication might be discarded, depending on the server implementation\&.
.PP
\fBQoS1, At least once:\fP The message is always delivered at least once\&. It might be delivered multiple times if there is a failure before an acknowledgment is received by the sender\&. The message must be stored locally at the sender, until the sender receives confirmation that the message has been published by the receiver\&. The message is stored in case the message must be sent again\&.
.PP
\fBQoS2, Exactly once:\fP The message is always delivered exactly once\&. The message must be stored locally at the sender, until the sender receives confirmation that the message has been published by the receiver\&. The message is stored in case the message must be sent again\&. QoS2 is the safest, but slowest mode of transfer\&. A more sophisticated handshaking and acknowledgement sequence is used than for QoS1 to ensure no duplication of messages occurs\&.