

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 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)中的左側選單中，依序選擇 **Test** (測試) 和 **MQTT test client** (MQTT 測試用戶端)。  
![從左側導覽的主控台功能表中選擇 MQTT 測試用戶端。](http://docs.aws.amazon.com/zh_tw/iot/latest/developerguide/images/choose-test.png)

1. 在 **Subscribe to a topic** (訂閱主題) 索引標籤中，輸入 {{topicName}} 來訂閱裝置發佈的主題。如需入門範例應用程式，請訂閱 **\#**，其會訂閱所有訊息主題。

   繼續入門範例，在 **Subscribe to a topic** (訂閱主題) 標籤的 **Topic filter** (主題篩選條件) 欄位中，輸入 **\#**，然後選擇 **Subscribe** (訂閱)。  
![訂閱主題索引標籤。](http://docs.aws.amazon.com/zh_tw/iot/latest/developerguide/images/subscribe-button-topic.png)

   主題訊息日誌頁面 **\#** 即會開啟，而且 **\#** 會出現在 **Subscriptions** (訂閱) 清單中。如果您在 中設定的裝置[設定您的裝置](configure-device.md)正在執行範例程式，您應該會在 **\#** 訊息日誌 AWS IoT 中看到傳送至 的訊息。收到具有訂閱主題的訊息時，訊息日誌項目會出現在**發佈**區段下方 AWS IoT。  
![顯示主題的 區段已成功訂閱。](http://docs.aws.amazon.com/zh_tw/iot/latest/developerguide/images/subscribed-button-topic.png)

1. 在 **\#** 訊息日誌頁面上，您也可以將訊息發佈至主題，但您必須指定主題名稱。您無法發佈至 **\#** 主題。

   發佈至已訂閱主題的訊息會在收到時出現在訊息日誌中，最近的訊息首先出現。

### 疑難排解 MQTT 訊息
<a name="view-mqtt-trouble"></a>

**使用萬用字元主題篩選條件**  
如果您的訊息未如預期般顯示在訊息日誌中，請嘗試訂閱萬用字元主題篩選條件，如 [主題名稱篩選條件](topics.md#topicfilters) 中所述。MQTT 多層萬用字元主題篩選條件是雜湊或井號 (`#`)，並且可以用作 **Subscription topic** (訂閱主題) 欄位中的主題篩選條件。

訂閱 `#` 主題篩選條件會訂閱訊息代理程式接收的每個主題。您可以縮小篩選範圍，方法是將主題篩選條件路徑的元素取代為 `#` 多層萬用字元或 '\+' 單層萬用字元。

**在主題篩選條件中使用萬用字元時**
+ 多層萬用字元必須是主題篩選條件中的最後一個字元。
+ 主題篩選條件路徑的每個主題層只能有一個單層萬用字元。

例如：


|  主題篩選條件  |  顯示訊息與  | 
| --- | --- | 
|  `#`  |  任何主題名稱  | 
|  `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 測試用戶端頁面的 **Publish to a topic** (發佈到主題) 標籤中，於 **Topic name** (主題名稱) 欄位中輸入您訊息的 {{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_tw/iot/latest/developerguide/images/publish-to-topic.png)

1. 在 **Subscriptions** (訂閱) 清單中，選擇 **my/topic** 來查看訊息。您應該會在發佈訊息承載視窗下方看到訊息出現在 MQTT 測試用戶端中。  
![已收到顯示已發佈主題的畫面。](http://docs.aws.amazon.com/zh_tw/iot/latest/developerguide/images/publish-to-topic-received.png)

您可以變更 {{Topic name}} (主題名稱) 欄位中的 **topicName**，然後選擇 **Publish** (發佈) 按鈕，以將 MQTT 郵件發佈至其他主題。

**重要**  
當您利用重疊主題建立多個訂閱時 (例如 probe1/temperature 和 probe1/\#)，同時發布到與兩個訂閱相符的主題的單一訊息，有可能會多次交付，每個重疊訂閱交付一次。

## 在 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. 在 **Subscribe to a topic** (訂閱主題) 索引標籤中，輸入 {{topicName}} 來訂閱裝置發佈的主題。若要使用共享訂閱，請訂閱共享訂閱的主題篩選條件，如下所示：

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

   範例主題篩選條件可以是 **$share/group1/topic1**，其會訂閱訊息主題 **topic1**。  
![標籤顯示如何指定共用訂閱的主題篩選條件。](http://docs.aws.amazon.com/zh_tw/iot/latest/developerguide/images/shared-subscription-topicfilter.png)

1. 開啟另一個 Web 瀏覽器，然後重複步驟 1 和步驟 2。透過此方式，您模擬兩個共享相同訂閱 **$share/group1/topic1** 的不同 MQTT 客戶端。

1. 選擇 MQTT 用戶端，在**發佈到主題**標籤的**主題名稱**欄位中輸入您訊息的 {{topicName}}。在此範例中，使用 **topic1**。請嘗試發佈訊息幾次。從這兩個 MQTT 用戶端的**訂閱**清單中，您應該能夠看到用戶端使用隨機分佈接收訊息。在這個範例中，我們發佈相同的訊息 "Hello from AWS IoT console" 三次。左側的 MQTT 用戶端收到兩次訊息，右側的 MQTT 用戶端收到一次訊息。  
![共用訂閱會與兩個用戶端進行流程，以共用主題的訂閱，只有一個用戶端會使用隨機分佈接收發佈至該主題的訊息。](http://docs.aws.amazon.com/zh_tw/iot/latest/developerguide/images/shared_subscriptions_test.gif)