本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
MQTT 主題
MQTT 主題識別 AWS IoT message. AWS IoT clients 透過提供訊息主題名稱來識別其發佈的訊息。用戶端能透過用 AWS IoT Core註冊主題篩選條件,來識別想要訂閱 (接收) 的簡訊。訊息代理程式使用主題名稱和主題篩選條件,將訊息從發佈用戶端路由至訂閱用戶端。
訊息代理程式使用主題來識別使用 傳送的訊息,MQTT並使用 傳送至 HTTP HTTPS 訊息 URL。
雖然 AWS IoT 支援某些保留的系統主題 ,但大多數MQTT主題都是由您建立和管理,System designer.s 主題 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 帳戶或 區域之間傳送或接收訊息。
如需設計主題名稱和命名空間的詳細資訊,請參閱我們的白皮書:設計 MQTT 的主題 AWS IoT Core。
如需應用程式如何發佈和訂閱訊息的範例,請從 AWS IoT Core 教學課程入門 和 AWS IoT 裝置 SDK、行動 SDK 和 AWS IoT 裝置用戶端 開始。
重要
主題命名空間僅限於 AWS 帳戶 和 區域。例如, AWS 帳戶 一個區域中的 所使用的sensor/temp/room1
主題與另一個區域中相同 AWS 帳戶或 AWS 帳戶 任何區域中任何其他帳戶所使用的sensor/temp/room1
主題不同。
主題 ARN
所有主題 ARNs(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
是主題 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 Resource Names) 都具有下列表單:
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
。