Schemat zdarzeń dla komunikatów trasowanych MQTT
Komunikaty MQTT są kierowane do tematu usługi Event Grid jako cloudEvents zgodnie z następującą logiką:
W przypadku komunikatów MQTT v3 lub komunikatów MQTT v5 wskaźnika formatu ładunku =0 ładunek zostanie przekazany w obiekcie data_base64 i zakodowany jako podstawowy ciąg 64 zgodnie z poniższym przykładem schematu.
{
"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==
}
}
W przypadku komunikatów MQTT v5 typu zawartości = "application/json; charset=utf-8" lub wskaźnik formatu ładunku=1, ładunek zostanie przekazany w obiekcie danych, a komunikat zostanie serializowany jako kod JSON (lub ciąg JSON, jeśli ładunek nie jest plikiem JSON). Ustawienie typu zawartości i/lub wskaźnika formatu ładunku umożliwia filtrowanie właściwości ładunku, ponieważ ładunek jest przekazywany w polu danych w taki sposób, jak to jest. Dowiedz się więcej na temat filtrowania ładunku komunikatu.
{
"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
}
}
W przypadku komunikatów MQTT w wersji 5, które są już otoczone w rozwiązaniu CloudEvent zgodnie z powiązaniem protokołu MQTT dla biblioteki CloudEvents, niezależnie od tego, czy używasz pliku binarnego con tryb namiotu czy struktury con tryb namiotu w kodowaniu JSON (utf-8), zdarzenie zostanie przekazane z oryginalnymi domyślnymi atrybutami CloudEvents po wzbogaceniu zgodnie z poniższym przykładem schematu.
{
"specversion": "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"
}
}
Następne kroki:
Aby dowiedzieć się więcej na temat routingu, skorzystaj z następujących artykułów:
Szybki start:
- Samouczek: kierowanie komunikatów MQTT do usługi Azure Event Hubs przy użyciu tematów przestrzeni nazw
- Samouczek: kierowanie komunikatów MQTT do usługi Azure Functions przy użyciu tematów niestandardowych