In shortMQTT QoS (quality of service) sets a message’s delivery assurance: QoS 0 delivers at most once, QoS 1 at least once and QoS 2 exactly once.
With QoS 0 a message is sent once without acknowledgement; it is fast but can be lost. With QoS 1 the sender repeats until acknowledged; the message is not lost but may arrive more than once. With QoS 2 a four-step handshake makes the message arrive exactly once; it is slower and uses more resources.
QoS applies per hop: publisher to broker and broker to subscriber. The effective level on the subscriber side is the lower of the publisher’s and the subscriber’s levels.
If you use QoS 1 the consumer must be able to process a duplicate message safely, which relates to idempotency.
In OPC Router projects
For flows where loss is unacceptable we plan QoS 1 together with duplicate protection on the destination side.