MQTT - AWS IoT
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

MQTT

MQTT 是专为受限设备设计的、广泛应用的轻型消息收发协议。有关更多信息,请参阅 MQTT v3.1.1 规范

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

  • AWS IoT Core 仅支持 MQTT 服务质量 (QoS) 级别 0 和 1。AWS IoT Core 不支持使用 QoS 级别 2 进行发布或订阅。在请求 QoS 级别 2 时,AWS IoT 消息代理不会发送 PUBACK 或 SUBACK。

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

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

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

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

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

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

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

您使用某个 AWS IoT 设备和移动开发工具包 通过 MQTT 连接到 AWS IoT Core。有关如何使用 MQTT 连接到 AWS IoT Core 的示例,请参阅 Python 开发工具包中的 basicPubSub 示例。其他 AWS IoT 开发工具包具有类似的示例应用程序。

有关 MQTT 消息的身份验证和端口映射的更多信息,请参阅协议、端口映射和身份验证