MQTT allows senders to set a Quality of Service (QoS) level, which provides certain guarantees about whether a message will be received (and whether duplicates are permitted). This article from HiveMQ highlights the problem of downgrading, where a client with a lower QoS level will not receive the message with the guarantees that the sender requested:
As already said, the QoS flows between a publishing and subscribing client are two different things as well as the QoS can be different. That means the QoS level can be different from client A, who publishes a message, and client B, who receives the published message. Between the sender and the broker the QoS is defined by the sender. When the broker sends out the message to all subscribers, the QoS of the subscription from client B is used.
Does MQTT provide a way of indicating that this downgrade is not acceptable, and that the message must be delivered using the original sender's requested QoS? Is the only option to make sure that both the sender and the receiver have the desired QoS setting before transmitting the message?