AWS-IOT Mqtt Broker是否记住客户端连接中的订阅客户端和未传递的消息?

时间:2015-12-09 06:33:45

标签: amazon-web-services mqtt aws-iot

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

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

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

"消息代理不支持持久会话(干净会话设置为0)。假设所有会话都是干净的会话,消息不会存储在会话中。如果MQTT客户端发送一条干净会话属性设置为false的消息,则客户端将断开连接。"

这是一个矛盾。有人可以详细说明一下。 感谢。

3 个答案:

答案 0 :(得分:2)

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

处获取更多信息。

答案 1 :(得分:0)

AWS IoT不支持持久性会话(干净会话标志= 0),因此在客户端断开连接后,它将无法记住已订阅的客户端或未传递的消息。大概采用这种方法可以最大程度地减少代理中的存储状态,从而可以扩展AWS IoT解决方案。

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

  

消息代理维护所有客户端会话的列表,并且   每个会话的订阅。当邮件发布在   主题,代理检查是否存在带有映射到订阅的会话   话题。然后,代理将发布消息转发给所有   具有当前连接的客户端的会话。

答案 2 :(得分:-1)

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

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