首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有多个QOS 2用户的MQTT QOS 2

具有多个QOS 2用户的MQTT QOS 2
EN

Stack Overflow用户
提问于 2021-04-22 18:08:49
回答 1查看 116关注 0票数 0

我在我的项目中使用MQTT V5,我有如下业务需求:

“发布者应收到来自订阅者的确认,确认他们已成功接收发布者的消息”。

请注意,这与MQTT V5中引入的MQTT请求/响应模式所满足的要求完全不同。我的publisher不需要包含数据的传统正确响应。我的发布者只需要一个回执确认,就可以知道订阅者已经收到了它的消息。就是这样,通信包越轻对我来说就越好。

我读了下面这篇文章:https://www.emqx.io/blog/introduction-to-mqtt-qos

其中包括以下QoS 2的序列图:

我完全理解当只有一个订阅者时的确认序列,如图所示。

我的问题是:

如果有多个订阅者订阅发布者的主题,则所有订阅者都订阅了QoS 2:

1-我的发布者是否会收到每个订阅者的一个PUBCOMP确认?换句话说,我的发布者是否会从代理收到多个PUBCOMP ack。

2-或者代理是否仅在从所有订阅者成功接收到PUBCOMP确认后才向发布者发送一条PUBCOMP消息?换句话说,只有在成功地将消息传递给所有订阅者之后,代理才会向我的发布者发送一个PUBCOMP ack吗?

提前感谢您对这个问题的关注。

EN

回答 1

Stack Overflow用户

发布于 2021-04-22 21:42:51

高QOS一次只在一个客户端和代理之间进行,而不是端到端的交付。

如果存在对匹配主题的持久订阅的离线客户端,则该图将被分解。如果给定的图表是这种情况,那么客户端将不会收到PUBCOMP,直到该客户端重新联机(这可能永远不会)。这也意味着它永远不能发布另一条消息,因为在QOS2中一次只能有一条消息在传输中。

那个图表不可能是正确的。(它还让代理在消息从发布客户端传递之前存储消息)。它也不会处理订阅客户端在QOS0或QOS1上订阅时发生的情况

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67211172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档