MQTT 主題 - AWS IoT Core

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

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 或區域之間傳送或接收訊息。

如需有關設計主題名稱和命名空間的詳細資訊,請參閱我們的白皮書,針對 AWS IoT Core設計 MQTT 主題

如需應用程式如何發佈和訂閱訊息的範例,請從 開始使用 AWS IoT CoreAWS IoT 裝置 SDK、行動 SDK 和 AWS IoT 裝置用戶端 開始。

重要

主題名稱空間僅限於 AWS 帳戶 和區域。例如,在一個區域 AWS 帳戶 中使用的sensor/temp/room1主題與另一個區域中同一帳戶使用的sensor/temp/room1主題不同,或由任何區域中的任何其他 AWS 帳戶使用 AWS 帳戶 的主題不同。

ARN 主題

所有主題 ARN (Amazon Resource Names) 都具有以下形式:

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 Names) 都具有以下形式:

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。