如果我有一个发布者向我的QoS为1的MQTT代理发送消息(至少一次传递)和一个QoS为2的订户(恰好一次传递)发送消息,则该订户是否仍可能接收重复消息? >
我担心的是,发布者可能会将重复的消息发送给代理(因为QoS 1表示可能),然后代理会将它们视为不同的消息,并将所有消息转发给订户。这是MQTT经纪人的工作方式吗?还是他们足够聪明,以至于意识到从发布者那里收到的重复消息都是一样的,然后将其转发给订阅者。
答案 0 :(得分:1)
QoS级别介于单个客户端和代理之间。订户还请求QoS级别,并且代理为订户授予最大 QoS。
v3.1.1的MQTT规范涵盖了section 3.8.4中的示例这些不同QoS级别的关系:
响应订阅而发送的有效载荷消息的QoS必须是原始发布消息的QoS的最小值和服务器授予的最大QoS。
订阅者订阅主题时,可能已被授予QoS 2的 maximum (最大)。但是原始发布者使用QoS1。因此,订阅者可以收到原始发布者发送的消息的副本。