

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

# 使用 MQTT 客户端查看 AWS IoT MQTT 消息
<a name="view-mqtt-messages"></a>

本节介绍如何在[AWS IoT 控制台](https://console.aws.amazon.com/iot/home)中使用 AWS IoT MQTT 测试客户端来查看发送和接收的 MQTT 消息。 AWS IoT本节中使用的示例与中使用的示例有关[AWS IoT Core 教程入门](iot-gs.md)；但是，您可以将示例中*topicName*使用的示例替换为您的 IoT 解决方案使用的任何[主题名称或主题筛选器](topics.md)。

设备发布由[主题](topics.md)标识的 MQTT 消息以将其状态传达给他们 AWS IoT，并 AWS IoT 发布 MQTT 消息以将更改和事件通知设备和应用程序。您可以使用 MQTT 客户端订阅这些主题，并在出现消息时查看这些消息。您还可以使用 MQTT 测试客户端将 MQTT 消息发布到您的中已订阅的设备和服务。 AWS 账户

**Topics**
+ [查看 MQTT 客户端中的 MQTT 消息](#view-mqtt-subscribe)
+ [从 MQTT 客户端发布 MQTT 消息](#view-mqtt-publish)
+ [在 MQTT 客户端中测试共享订阅](#view-mqtt-shared-subscriptions)

## 查看 MQTT 客户端中的 MQTT 消息
<a name="view-mqtt-subscribe"></a>

以下步骤说明如何订阅您的设备向其发布消息的特定 MQTT 主题，并在 [AWS IoT 控制台](https://console.aws.amazon.com/iot/home)中查看这些消息。

**在 MQTT 测试客户端中查看 MQTT 消息**

1. 打开 [AWS IoT 控制台](https://console.aws.amazon.com/iot/home)，在左侧菜单中选择**测试**，然后选择 **MQTT 客户端**。  
![\[从左侧导航栏的控制台菜单中选择 MQTT 测试客户端。\]](http://docs.aws.amazon.com/zh_cn/iot/latest/developerguide/images/choose-test.png)

1. 在 “**订阅主题**” 选项卡中，输入，订阅您的设备发布的主题。*topicName*对于入门示例应用程序，请订阅 **\$1**，它订阅了所有消息主题。

   继续使用入门示例操作，在 **Subscribe to a topic**（订阅主题）选项卡上的 **Topic filter**（主题筛选条件）字段，输入 **\$1**，然后选择 **Subscribe**（订阅）。  
![\[“订阅主题”选项卡。\]](http://docs.aws.amazon.com/zh_cn/iot/latest/developerguide/images/subscribe-button-topic.png)

   主题消息日志页 **\$1** 将会打开，且 **\$1** 会显示在 **Subscriptions**（订阅）列表。如果您在中配置的设备[配置您的设备](configure-device.md)正在运行示例程序，则应在 **\$1** 消息日志 AWS IoT 中看到它发送到的消息。当收到带有订阅主题的消息时，消息日志条目将显示在 “**发布**” 部分下方。 AWS IoT  
![\[显示该主题已成功订阅的部分。\]](http://docs.aws.amazon.com/zh_cn/iot/latest/developerguide/images/subscribed-button-topic.png)

1. 在 **\$1** 消息日志页面，您还可以将消息发布到主题，但需要指定主题名称。您无法发布到 **\$1** 主题。

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

### 排除 MQTT 消息的故障
<a name="view-mqtt-trouble"></a>

**使用通配符主题筛选条件**  
如果您的消息未按预期在消息日志中显示，请尝试按照 [主题名称筛选条件](topics.md#topicfilters) 中所述订阅通配符主题筛选条件。MQTT 多级通配符主题筛选条件是哈希或井号 (`#`)，并且可以用作 **Subscription topic**（订阅主题）字段中的主题筛选条件。

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

**在主题筛选条件中使用通配符时**
+ 多级通配符必须是主题筛选条件中的最后一个字符。
+ 主题筛选条件路径在每个主题级别中只能有一个单级通配符。

例如：


|  主题筛选条件  |  显示带有以下内容的消息  | 
| --- | --- | 
|   `#`   |   任何主题名称   | 
|   `topic_1/#`   |   以 `topic_1/` 开头的主题名称  | 
|   `topic_1/level_2/#`   |   以 `topic_1/level_2/` 开头的主题名称  | 
|   `topic_1/+/level_3`   |   以 `topic_1/` 开头并以 `/level_3` 结尾的主题名称，并且在之间有一个任意值的元素。  | 

有关主题筛选条件的更多信息，请参阅 [主题名称筛选条件](topics.md#topicfilters)。

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

## 从 MQTT 客户端发布 MQTT 消息
<a name="view-mqtt-publish"></a>

**向 MQTT 主题发布消息**

1. 在 MQTT 测试客户端页面的**发布到主题**选项卡的**主题名称**字段中，输入您的消息*topicName*的内容。在此示例中，使用 **my/topic**。
**注意**  
不要在主题名称中使用个人身份信息，无论您是在测试 MQTT 客户端还是在系统实施中使用这些信息。主题名称可以出现在未加密的通信和报告中。

1. 在消息有效载荷窗口中，输入以下 JSON：

   ```
   {
       "message": "Hello, world",
       "clientType": "MQTT test client"
   }
   ```

1. 选择 **Publish**（发布）以将消息发布到 AWS IoT。
**注意**  
确保您已订阅 **my/topic** 主题，然后再发布您的消息。  
![\[“发布到主题”选项卡。\]](http://docs.aws.amazon.com/zh_cn/iot/latest/developerguide/images/publish-to-topic.png)

1. 在**订阅**列表中，选择**我的/主题**以查看消息。您应该看到该消息显示在 MQTT 测试客户端中的发布消息有效载荷窗口下。  
![\[显示收到已发布主题的屏幕。\]](http://docs.aws.amazon.com/zh_cn/iot/latest/developerguide/images/publish-to-topic-received.png)

您可以将 MQTT 消息发布到其他主题，方法是更改**主题名称**字段*topicName*中的并选择**发布**按钮。

**重要**  
当您创建多个包含重叠主题的订阅时（例如 probe1/temperature 和 probe1/\$1），则发布到与两个订阅均匹配的主题的单条消息可能会被多次传送，针对每个重叠订阅传送一次。

## 在 MQTT 客户端中测试共享订阅
<a name="view-mqtt-shared-subscriptions"></a>

本节介绍如何在[AWS IoT 控制台](https://console.aws.amazon.com/iot/home)中使用 AWS IoT MQTT 客户端查看通过共享订阅发送和接收的 AWS IoT MQTT 消息。 [共享订阅](mqtt.md#mqtt5-shared-subscription)允许多个客户端共享一个主题的订阅，只有一个客户接收使用随机分布发布到该主题的消息。要模拟多个 MQTT 客户端（在本例中为两个 MQTT 客户端）共享同一个订阅，您可以通过多个 Web 浏览器在[AWS IoT 控制台](https://console.aws.amazon.com/iot/home)中打开 AWS IoT MQTT 客户端。本节使用的示例与 [AWS IoT Core 教程入门](iot-gs.md) 中使用的示例无关。有关更多信息，请参阅[共享订阅](mqtt.md#mqtt5-shared-subscription)。

**共享对 MQTT 主题的订阅**

1. 在 [AWS IoT 控制台](https://console.aws.amazon.com/iot/home)中，在导航窗格中选择**测试**，然后选择 **MQTT 测试客户端**。

1. 在 “**订阅主题**” 选项卡中，输入，订阅您的设备发布的主题。*topicName*要使用共享订阅，请按如下方式订阅共享订阅的主题筛选条件：

   ```
   $share/{ShareName}/{TopicFilter}
   ```

   示例主题筛选条件可以是 **\$1share/group1/topic1**，它订阅消息主题 **topic1**。  
![\[显示如何为共享订阅指定主题筛选器的选项卡。\]](http://docs.aws.amazon.com/zh_cn/iot/latest/developerguide/images/shared-subscription-topicfilter.png)

1. 打开另一个 Web 浏览器，然后重复步骤 1 和步骤 2。通过这种方式，您可以模拟共享相同订阅 **\$1share/group1/topic1** 的两个不同的 MQTT 客户端。

1. 选择一个 MQTT 客户端，在 “**发布到主题**” 选项卡的 “**主题名称**” 字段中，输入您的消息的。*topicName*在此示例中，使用 **topic1**。尝试发布消息几次。从两个 MQTT 客户端的**订阅**列表中，您应该能够看到客户端使用随机分布接收消息。在此示例中，我们发布了三次相同的消息“来自 AWS IoT 控制台的 Hello”。左侧的 MQTT 客户端收到消息两次，右侧的 MQTT 客户端收到消息一次。  
![\[共享订阅允许两个客户端共享对某个主题的订阅，并且只有一个客户端会收到使用随机分布发布到该主题的消息。\]](http://docs.aws.amazon.com/zh_cn/iot/latest/developerguide/images/shared_subscriptions_test.gif)