AWS IoT
开发人员指南

MQTT

MQTT 是专为受限设备设计的、广泛应用的轻型消息处理协议。有关更多信息,请参阅 MQTT。AWS IoT 消息代理支持服务质量 (QoS) 级别 0 和 1。

尽管 AWS IoT 消息代理的实施基于 MQTT 3.1.1 版,但却与规范存在如下偏差:

  • 在 AWS IoT 中,订阅具有 QoS 0 的主题意味着将消息传送零次或多次。消息可能会多次发送。多次发送的消息在发送时可能会使用不同的数据包 ID。在这些情况下,不会设置 DUP 标志。

  • AWS IoT 不支持利用 QoS 2 进行发布和订阅。请求 QoS 2 时,AWS IoT 消息代理不会发送 PUBACK 或 SUBACK。

  • 在响应连接请求时,消息代理将发送 CONNACK 消息。此消息包含一个标志,用于指明该连接是否会恢复上一个会话。

  • 当客户端订阅主题时,在消息代理开始发送 SUBACK 和客户端开始收到新的匹配消息之间存在时间延迟。

  • MQTT 规范提供了相应的预配置,以供发布者用于请求代理将发送到主题的最新消息保留下来并发送给未来的所有主题订阅者。AWS IoT 不支持保留的消息。如果请求保留消息,则将断开连接。

  • 消息代理使用客户端 ID 标识每个客户。客户端 ID 作为 MQTT 有效负载的一部分从客户端传递到消息代理。两个具有相同客户端 ID 的客户端不得同时连接到消息代理。当某个客户端使用另一客户端正在使用的客户端 ID 连接到消息代理时,会接受新的客户端连接,而之前连接的客户端会断开连接。

  • 在极少数情况下,消息代理可能会使用不同的数据包 ID 再次发送相同的逻辑 PUBLISH 消息。

  • 消息代理并不保证收到消息和 ACK 的顺序。