mqtt的Qos选值问题

2020-08-18  本文已影响0人  大风过岗

QOS的使用场景:

1、在发送消息时,指定QOS

2、在订阅主题时,指定QOS

这俩种场景下,QOS各自的作用是什么?

问题如下:

发送者A,发送到主题/sys/platform/device/ack的QOS为0
而接受者B,订阅主题/sys/platform/device/ack的QOS为2,
此时的服务质量是怎么表现的?

发送方表现的行为是什么?

broker表现的行为是什么 ?

接收方表现的行为是什么?

B的网络状况不好时,是否存在丢包的情况?

即:实际在进行消息转发时,采用的Qos是多少,起决于什么?

A 订阅 一个主题的Qos,服务端是怎么决定的?

broker根据什么条件决定授予客户端Qos的最大值?

比如: 订阅者请求的Qos是2,broker实际授予它的Qos能是几?

消息在实际转发给订阅者时,其Qos=Min(pub_qos,sub_granted_by_server) //取俩者之间的最小值
比如:
发送者的Qos是1,而订阅者被授予的Qos是0,那么,服务端broker在实际转发消息时,允许采用Qos为0进行消息发送。

第二个问题就是: 客户端在订阅时可以被授予的最大QOS值是多少?

比如:

 订阅者请求的Qos是2,那么服务端granted_qos=min(sub_req_qos,permitted_granted_qos)

订阅者的Qos所代表的含义:

服务端可以授予比订阅者要求的低一些的 QoS 等级。

The SUBSCRIBE packet also specifies (for each Subscription) the maximum QoS with which the Server
can send Application Messages to the Client.

This gives the maximum QoS level at which the Server can send Application Messages to the Client.

上一篇下一篇

猜你喜欢

热点阅读