MQTT允许发送方设置服务质量(QoS)级别,该级别为是否将接收消息(以及是否允许重复)提供了一定的保证。HiveMQ的这篇文章着重介绍了降级的问题,在该问题中,具有较低QoS级别的客户端将无法保证发送方要求的情况下收到消息:
如前所述,发布客户端和订阅客户端之间的QoS流是两个不同的事物,并且QoS可以不同。这意味着QoS级别可能不同于发布消息的客户端A和接收发布消息的客户端B。在发送方和代理之间,QoS由发送方定义。当代理将消息发送给所有订阅者时,将使用来自客户端B的订阅的QoS。
MQTT是否提供指示这种降级是不可接受的方式,并且消息必须使用原始发送者请求的QoS进行传递?在发送消息之前,唯一的选择是确保发送方和接收方都具有所需的QoS设置吗?