使用 AWS IoT MQTT 客户端查看 MQTT 消息 - AWS IoT Core

使用 AWS IoT MQTT 客户端查看 MQTT 消息

此部分描述如何在 AWS IoT 控制台中使用 AWS IoT MQTT 测试客户端以查看 AWS IoT 发送和接收的 MQTT 消息。本部分中使用的示例涉及 AWS IoT Core 入门教程 使用的示例;但您可以将示例中使用的 topicName 替换为您的 IoT 解决方案使用的任何主题名称或主题筛选条件

设备发布有关主题的 MQTT 消息以将其状态传达给 AWS IoT,而 AWS IoT 发布 MQTT 消息以向设备和应用程序通知更改和事件。您可以使用 MQTT 客户端订阅这些主题,并在出现消息时查看这些消息。您还可以使用 MQTT 测试客户端将 MQTT 消息发布到您 AWS 账户中的已订阅设备和服务。

查看 MQTT 客户端中的 MQTT 消息

以下步骤说明如何订阅您的设备向其发布消息的特定 MQTT 主题,并在 AWS IoT 控制台中查看这些消息。

在 MQTT 测试客户端中查看 MQTT 消息
  1. 打开 AWS IoT 控制台,在左侧菜单中选择 Test (测试),然后选择 MQTT client (MQTT 客户端)。

    从左侧导航栏的控制台菜单中选择 MQTT 测试客户端。
  2. Subscribe to a topic(订阅主题)选项卡中,输入topicName订阅您的设备发布的主题。对于入门示例应用程序,请订阅 #,它订阅了所有消息主题。

    继续使用入门示例操作,在 Subscribe to a topic(订阅主题)选项卡上的 Topic filter(主题筛选条件)字段,输入 #,然后选择 Subscribe(订阅)。

    “订阅主题”选项卡。

    主题消息日志页 # 将会打开,且 # 会显示在 Subscriptions(订阅)列表。如果您在 配置您的设备 中配置的设备正在运行示例程序,您应该看到它发送到 # 消息日志中的 AWS IoT 的消息。当 AWS IoT 收到订阅主题的消息时,消息日志条目将显示在 Publish(发布)部分下。

    显示该主题已成功订阅的部分。
  3. # 消息日志页面,您还可以将消息发布到主题,但需要指定主题名称。您无法发布到 # 主题。

    发布到已订阅主题的消息将在收到时在消息日志中显示,最近的消息将首先显示。

排除 MQTT 消息的故障

使用通配符主题筛选条件

如果您的消息未按预期在消息日志中显示,请尝试按照 主题筛选条件 中所述订阅通配符主题筛选条件。MQTT 多级通配符主题筛选条件是哈希或井号 (#),并且可以用作 Subscription topic(订阅主题)字段中的主题筛选条件。

订阅 # 主题筛选条件将订阅消息代理接收的每个主题。您可以将主题筛选条件路径替代为 # 多级通配符或“+”单级通配符,从而缩小筛选条件的范围。

在主题筛选条件中使用通配符时
  • 多级通配符必须是主题筛选条件中的最后一个字符。

  • 主题筛选条件路径在每个主题级别中只能有一个单级通配符。

例如:

主题筛选条件

显示带有以下内容的消息

#

任何主题名称

topic_1/#

topic_1/ 开头的主题名称

topic_1/level_2/#

topic_1/level_2/ 开头的主题名称

topic_1/+/level_3

topic_1/ 开头并以 /level_3 结尾的主题名称,并且在之间有一个任意值的元素。

有关主题筛选条件的更多信息,请参阅 主题筛选条件

检查主题名称错误

MQTT 主题名称和主题筛选条件区分大小写。如果您的设备将消息发布到 Topic_1(带有一个大写的 T)而不是您订阅的主题 topic_1,则其消息将不会显示在 MQTT 测试客户端中。但是,订阅通配符主题筛选条件时,会显示设备正在发布消息,并且您会看到它使用的主题名称不是您所期望的主题名称。

从 MQTT 客户端发布 MQTT 消息

向 MQTT 主题发布消息
  1. 在 MQTT 测试客户端页面上,在 Publish to a topic(发布到主题)选项卡上的 Topic name(主题名称)字段中,输入您消息的 topicName。在此示例中,使用 my/topic

    注意

    不要在主题名称中使用个人身份信息,无论您是在测试 MQTT 客户端还是在系统实施中使用这些信息。主题名称可以出现在未加密的通信和报告中。

  2. 在消息负载窗口中,输入以下 JSON:

    { "message": "Hello, world", "clientType": "MQTT test client" }
  3. 选择 Publish(发布)以将消息发布到 AWS IoT。

    注意

    确保您已订阅 my/topic 主题,然后再发布您的消息。

    “发布到主题”选项卡。
  4. Subscription(订阅)列中,选择 my/topic 以查看消息。您应该看到该消息显示在 MQTT 测试客户端中的发布消息有效负载窗口下。

    显示收到已发布主题的屏幕。

您可以通过更改 Topic name(主题名称)字段中的 topicName,然后选择 Publish(发布)按钮,以将 MQTT 消息发布到其它主题。

重要

当您创建多个包含重叠主题的订阅时(例如 probe1/temperature 和 probe1/#),则发布到与两个订阅均匹配的主题的单条消息可能会被多次传送,针对每个重叠订阅传送一次。

在 MQTT 客户端中测试共享订阅

本节介绍如何在 AWS IoT 控制台中使用 AWS IoT MQTT 客户端来观察 AWS IoT 使用共享订阅发送和接收的 MQTT 消息。共享订阅 允许多个客户端共享一个主题的订阅,只有一个客户接收使用随机分布发布到该主题的消息。要模拟多个 MQTT 客户端(在本例中为两个 MQTT 客户端)共享同一个订阅,您可以通过多个 Web 浏览器,在 AWS IoT 控制台中打开 AWS IoT MQTT 客户端。本节使用的示例与 AWS IoT Core 入门教程中使用的示例无关。有关更多信息,请参阅共享订阅

共享对 MQTT 主题的订阅
  1. AWS IoT 控制台中,在导航窗格中选择测试,然后选择 MQTT 测试客户端

  2. Subscribe to a topic(订阅主题)选项卡中,输入topicName订阅您的设备发布的主题。要使用共享订阅,请按如下方式订阅共享订阅的主题筛选条件:

    $share/{ShareName}/{TopicFilter}

    示例主题筛选条件可以是 $share/group1/topic1,它订阅消息主题 topic1

    显示如何为共享订阅指定主题筛选器的选项卡。
  3. 打开另一个 Web 浏览器,然后重复步骤 1 和步骤 2。通过这种方式,您可以模拟共享相同订阅 $share/group1/topic1 的两个不同的 MQTT 客户端。

  4. 选择一个 MQTT 客户端,在发布到主题选项卡上的主题名称字段中,输入消息的 topicName。在此示例中,使用 topic1。尝试发布消息几次。从两个 MQTT 客户端的订阅列表中,您应该能够看到客户端使用随机分布接收消息。在此示例中,我们发布了三次相同的消息“来自 AWS IoT 控制台的 Hello”。左侧的 MQTT 客户端收到消息两次,右侧的 MQTT 客户端收到消息一次。

    共享订阅允许两个客户端共享对某个主题的订阅,并且只有一个客户端会收到使用随机分布发布到该主题的消息。