MQTT 主题 - AWS IoT Core

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

MQTT 主题

MQTT 主题用于标识 AWS IoT 消息。 AWS IoT 客户通过提供消息主题名称来识别他们发布的消息。客户端通过将主题筛选条件注册到 AWS IoT Core来标识要订阅(接收)的消息。消息代理使用主题名称和主题筛选条件将消息从发布客户端传输到订阅客户端。

消息代理使用主题来识别使用 MQTT 发送的消息以及使用 HTTP 发送到 HTTPS 消息 URL 的消息。

虽然 AWS IoT 支持一些保留的系统主题,但大多数 MQTT 主题是由您(即系统设计者)创建和管理的。 AWS IoT 使用主题来识别从发布客户端收到的消息,并选择要发送给订阅客户端的消息,如以下各节所述。在为系统创建主题命名空间之前,请查看 MQTT 主题的特征,以创建最适合您的 IoT 系统的主题名称层次结构。

主题名称

主题名称和主题筛选条件是 UTF-8 编码的字符串。它们可以使用正斜杠 (/) 字符分隔层次结构的级别来表示信息的层次结构。例如,此主题名称可以引用房间 1 中的温度传感器:

  • sensor/temperature/room1

在此示例中,其他房间中可能还有其它类型的传感器,其主题名称如下:

  • sensor/temperature/room2

  • sensor/humidity/room1

  • sensor/humidity/room2

注意

在考虑系统中消息的主题名称时,请记住:

  • 主题名称和主题筛选条件区分大小写。

  • 主题名称不得包含个人身份信息。

  • 以 $ 开头的主题名称均为只能由 AWS IoT Core使用的预留主题

  • AWS IoT Core 无法在 AWS 账户 s 或地区之间发送或接收消息。

有关设计主题名称和命名空间的更多信息,请参阅我们的白皮书《为 AWS IoT Core Core 设计 MQTT 主题》。

有关应用程序如何发布和订阅消息的示例,请从 入门 AWS IoT CoreAWS IoT 设备 SDK、移动 SDK 和 AWS IoT 设备客户端 开始查阅。

重要

主题命名空间仅限于 AWS 账户 和区域。例如,一个区域 AWS 账户 中某人使用的sensor/temp/room1主题与另一个区域的同一个 AWS 账户使用的sensor/temp/room1主题或任何其他区域中任何其他 AWS 账户 账户使用的主题不同。

主题 ARN

所有主题 ARN (Amazon Resource Name) 都采用以下形式:

arn:aws:iot:aws-region:AWS-account-ID:topic/Topic

例如,arn:aws:iot:us-west-2:123EXAMPLE456:topic/application/topic/device/sensor 是主题 application/topic/device/sensor 的 ARN。

主题筛选条件

订阅客户端会向消息代理注册主题筛选条件,以指定消息代理应将消息发送到的主题。主题筛选条件可以是用于订阅单个主题的单个主题名称,也可以包含通配符以同时订阅多个主题名称。

发布客户端无法在其发布的主题名称中使用通配符。

下表列出了可在主题筛选条件中使用的通配符。

主题通配符
通配符 匹配项 注意
# 主题层次结构中位于其级别及其以下的所有字符串。

必须是主题筛选条件中的最后一个字符。

必须是其主题层次结构级别中的唯一字符。

可以在还包含 + 通配符的主题筛选条件中使用。

+ 级别中包含字符的任何字符串。

必须是其主题层次结构级别中的唯一字符。

可在主题筛选条件的多个级别中使用。

将通配符用于之前的传感器主题名称示例:

  • sensor/# 订阅接收发布到 sensor/sensor/temperaturesensor/temperature/room1 的消息,但不会接收发布到 sensor 的消息。

  • sensor/+/room1 订阅接收发布到 sensor/temperature/room1sensor/humidity/room1 的消息,但不会接收发布到 sensor/temperature/room2sensor/humidity/room2 的消息。

主题筛选条件 ARN

所有主题筛选条件 ARN (Amazon Resource Name) 都采用以下形式:

arn:aws:iot:aws-region:AWS-account-ID:topicfilter/TopicFilter

例如,arn:aws:iot:us-west-2:123EXAMPLE456:topicfilter/application/topic/+/sensor 是主题筛选条件 application/topic/+/sensor 的 ARN。