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

主题

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

虽然 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 账户或区域之间发送或接收消息。

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

主题筛选条件

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

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

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

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

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

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

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

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

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

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

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

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

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