本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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 或地区之间发送或接收消息。
有关设计主题名称和命名空间的更多信息,请参阅我们的白皮书《设计MQTT主题》。 AWS IoT Core
有关应用程序如何发布和订阅消息的示例,请从 AWS IoT Core 教程入门 和 AWS IoT 设备 SDK、移动 SDK 和 AWS IoT 设备客户端 开始查阅。
重要
主题命名空间仅限于 AWS 账户 和区域。例如,一个区域 AWS 账户 中某人使用的sensor/temp/room1
主题与另一个区域的同一个 AWS
账户使用的sensor/temp/room1
主题或任何其他区域中任何其他 AWS 账户 账户使用的主题不同。
话题 ARN
所有主题ARNs(Amazon 资源名称)的格式如下:
arn:aws:iot:
aws-region
:AWS-account-ID
:topic/Topic
例如,arn:aws:iot:us-west-2:123EXAMPLE456:topic/application/topic/device/sensor
是ARN针对主题的 application/topic/device/sensor
。
主题筛选条件
订阅客户端会向消息代理注册主题筛选条件,以指定消息代理应将消息发送到的主题。主题筛选条件可以是用于订阅单个主题的单个主题名称,也可以包含通配符以同时订阅多个主题名称。
发布客户端无法在其发布的主题名称中使用通配符。
下表列出了可在主题筛选条件中使用的通配符。
通配符 | 匹配项 | 注意 |
---|---|---|
# | 主题层次结构中位于其级别及其以下的所有字符串。 |
必须是主题筛选条件中的最后一个字符。 必须是其主题层次结构级别中的唯一字符。 可以在还包含 + 通配符的主题筛选条件中使用。 |
+ | 级别中包含字符的任何字符串。 |
必须是其主题层次结构级别中的唯一字符。 可在主题筛选条件的多个级别中使用。 |
将通配符用于之前的传感器主题名称示例:
-
sensor/#
订阅接收发布到sensor/
、sensor/temperature
和sensor/temperature/room1
的消息,但不会接收发布到sensor
的消息。 -
sensor/+/room1
订阅接收发布到sensor/temperature/room1
和sensor/humidity/room1
的消息,但不会接收发布到sensor/temperature/room2
或sensor/humidity/room2
的消息。
话题筛选器 ARN
所有主题筛选条件ARNs(Amazon 资源名称)均采用以下格式:
arn:aws:iot:
aws-region
:AWS-account-ID
:topicfilter/TopicFilter
例如,arn:aws:iot:us-west-2:123EXAMPLE456:topicfilter/application/topic/+/sensor
是ARN针对主题的筛选器 application/topic/+/sensor
。