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

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

MQTT 主题

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

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

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

主题名称

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

  • sensor/temperature/room1

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

  • sensor/temperature/room2

  • sensor/humidity/room1

  • sensor/humidity/room2

注意

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

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

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

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

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

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

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

重要

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

主题 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。