MQTT 允许发送方设置服务质量(QoS) 级别,该级别为是否会收到消息(以及是否允许重复)提供某些保证。这篇来自HiveMQ 的文章强调了降级问题,其中具有较低 QoS 级别的客户端将不会收到具有发送方请求的保证的消息:
如前所述,发布和订阅客户端之间的 QoS 流是两个不同的东西,而且 QoS 可以不同。这意味着 QoS 级别可以不同于发布消息的客户端 A 和接收发布消息的客户端 B。在发送方和代理之间,QoS 由发送方定义。当代理向所有订阅者发送消息时,使用来自客户端 B 的订阅的 QoS。
MQTT 是否提供了一种方法来表明这种降级是不可接受的,并且必须使用原始发送者请求的 QoS 来传递消息?在传输消息之前确保发送方和接收方都具有所需的 QoS 设置是唯一的选择吗?