MQTT ルーティング メッセージのイベント スキーマ
MQTT メッセージは、次のロジックに従って、CloudEvents として Event Grid トピックにルーティングされます。
ペイロード形式インジケータ―が 0 の MQTT v3 メッセージまたは MQTT v5 メッセージの場合、ペイロードは data_base64 オブジェクトに転送され、次のスキーマ サンプルに従って Base 64 文字列としてエンコードされます。
{
"specversion": "1.0",
"id": "9aeb0fdf-c01e-0131-0922-9eb54906e20", // unique id stamped by the service.
"time": "2019-11-18T15:13:39.4589254Z", // timestamp when the message was received by the service.
"type": "MQTT.EventPublished", // set type for all MQTT messages enveloped by the service.
"source": "testnamespace", // namespace name
"subject": "campus/buildings/building17", // topic of the MQTT publish request.
"data_base64":
{
IlRlbXAiOiAiNzAiLAoiaHVtaWRpdHkiOiAiNDAiCg==
}
}
コンテンツ タイプが "application/json; charset=utf-8" またはペイロード形式インジケーターが 1 の MQTT v5 メッセージの場合、ペイロードはデータ オブジェクトに転送され、メッセージは JSON (ペイロードが JSON でない場合は JSON 文字列) としてシリアル化されます。 コンテンツ タイプとペイロード形式インジケーターまたはそのいずれかを設定すると、ペイロードがデータ フィールド内でそのまま転送されるため、ペイロード プロパティをフィルター処理できるようになります。 詳細については、メッセージのペイロードのフィルター処理に関するページを参照してください。
{
"specversion": "1.0",
"id": "9aeb0fdf-c01e-0131-0922-9eb54906e20", // unique id stamped by the service.
"time": "2019-11-18T15:13:39.4589254Z", // timestamp when the message was received by the service.
"type": "MQTT.EventPublished", // set type for all MQTT messages enveloped by the service.
"source": "testnamespace", // namespace name
"subject": "campus/buildings/building17", // topic of the MQTT publish request.
"data":
{
"Temp": 70,
"humidity": 40
}
}
CloudEvents の MQTT プロトコル バインドに従ってCloudEvent に既にエンベロープされている MQTT v5 メッセージの場合、バイナリ コンテンツ モードまたは構造化コンテンツ モードを JSON エンコード (utf-8) で使用するかにかかわらず、次のスキーマ サンプルに従ってエンリッチメントが行われた後、イベントは元の既定の CloudEvents 属性で転送されます。
{
"specverion": "1.0",
"id": "9aeb0fdf-c01e-0131-0922-9eb54906e20", // original id stamped by the client.
"time": "2019-11-18T15:13:39.4589254Z", // timestamp when the message was received by the client
"type": "Custom.Type", // original type value stamped by the client.
"source": "Custom.Source", // original source value stamped by the client.
"subject": " Custom.Subject", // original subjectvalue stamped by the client.
"data":
{
"Temp": "70",
"humidity": "40"
}
}
次のステップ:
ルーティングの詳細については、次の記事を参照してください。
クイックスタート:
- チュートリアル: 名前空間トピックを使用して MQTT メッセージを Azure Event Hubs にルーティングする
- チュートリアル: カスタム トピックを使用して MQTT メッセージを Azure Functions にルーティングする
概念:
- ルーティング
- ルーティング フィルター処理
- ルーティング エンリッチメント