I wonder if the message sent order is preserved. That is, when a publisher sends a sequence of messages, is each subscriber guaranteed to receive the same sequence as the publisher had sent it? For both clean and persistent sessions?
A summary of the message ordering capabilities in MQTT 3.1. 1 can be found in the specification itself here. In summary: no guarantees are made about the relative ordering of messages published with different QoS values.
The job of an MQTT broker is to filter messages based on topic, and then distribute them to subscribers. There is no direct connection between a publisher and subscriber. All clients can publish (broadcast) and subscribe (receive). MQTT brokers do not normally store messages.
Normally if a publisher publishes a message to a topic, and no one is subscribed to that topic the message is simply discarded by the broker. However the publisher can tell the broker to keep the last message on that topic by setting the retained message flag.
Message Expiry Interval in MQTT 5 When the retained=true option is set on the PUBLISH message, this interval also defines how long a message is retained on a topic. Publish Packet with Message Expiry Interval set to 120 seconds. The retainFlag is set to "true", so the message will also be retained for 120 seconds.
A summary of the message ordering capabilities in MQTT 3.1.1 can be found in the specification itself here.
In summary:
QoS 1 ordering can be guaranteed if the client/broker only allow a single message inflight at any time.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With