4

此处的 AWS 文档([ http://docs.aws.amazon.com/iot/latest/developerguide/iot-message-broker.html])这样说:-

“消息代理维护所有客户端会话和每个会话的订阅的列表。当在主题上发布消息时,代理检查具有映射到该主题的订阅的会话。然后代理将发布消息转发到所有会话有一个当前连接的客户端。对于所有没有连接的客户端的匹配会话,代理保存消息以在客户端连接时传递。

但是,在这里([ http://docs.aws.amazon.com/iot/latest/developerguide/protocols.html])它说:-

“消息代理不支持持久会话(clean session 设置为 0)。假设所有会话都是 clean session,并且消息不会跨会话存储。如果 MQTT 客户端发送的消息 clean session 属性设置为 false,则客户端将断开连接。”

这是一个矛盾。有人可以详细说明和澄清。谢谢。

4

3 回答 3

3

AWS IoT 现在支持应该满足您要求的持久连接。您可以在https://aws.amazon.com/about-aws/whats-new/2019/01/aws-iot-core-now-enables-customers-to-store-messages-for-disconnected-获取更多信息设备/

于 2019-01-11T20:57:18.730 回答
0

AWS IoT 不支持持久会话(干净会话标志 = 0),因此在客户端断开连接后它不会记住订阅的客户端或未传递的消息。它可能采用这种方法来最小化代理中的存储状态,从而允许 AWS IoT 解决方案进行扩展。

截至 2018 年 11 月 30 日,您的第一个链接 ( https://docs.aws.amazon.com/iot/latest/developerguide/iot-message-broker.html ) 中的文档已更新,仅说明:

消息代理维护所有客户端会话的列表以及每个会话的订阅。当在主题上发布消息时,代理会检查具有映射到该主题的订阅的会话。然后,代理将发布消息转发到具有当前连接的客户端的所有会话。

于 2018-11-30T02:00:06.823 回答
-1

第一部分解释了向订阅客户端的消息传递以及在客户端连接和断开连接时传播消息的机制。

持久会话意味着发送到代理的所有消息都保存到磁盘或数据库中,因此独立于客户端连接。

于 2015-12-10T05:08:38.427 回答