我了解,如果您subscribed
具有特定QoS
的topic
,订阅者将仅看到MQTT
代理提供的该topic
下的消息,其QoS
级别等于或低于发布主题时指定的QoS
。
订阅topic = news
和QoS = 1
,然后他将能够在topic = news
下看到任何published
消息,并带有QoS = 1 OR 0
我subscribed
QoS = 0
topic = news
,这个topic
是用QoS = 2
发布的,当我连接到broker
时,我收到了发布的消息,但带有它的QoS = 0
,第二次,我发布了相同的主题,但QoS = 1
,当我用QoS = 0
订阅它时, 我收到了消息,但QoS = 0
.
因此,由于无论QoS
级别如何,我都会收到消息,但是,由于QoS
"降级",那么风险是什么?任何人都可以解释一下?!!
当您进行订阅时,您是在向代理说"我希望接收消息的最大 QoS 是 X"。这意味着,如果一条消息以更高的 QoS 传入您订阅的主题,它将为您降级。其他客户端不受影响。希望下表能为您澄清这一点。
Subscription QoS | Message QoS | Delivered QoS
=================|=============|==============
0 | 0 | 0
0 | 1 | 0
0 | 2 | 0
| |
1 | 0 | 0
1 | 1 | 1
1 | 2 | 1
| |
2 | 0 | 0
2 | 1 | 1
2 | 2 | 2