Filtrowanie komunikatów trasowanych MQTT
Funkcja filtrowania subskrypcji usługi Event Grid umożliwia filtrowanie trasowanych komunikatów MQTT.
Filtrowanie tematów
Możesz filtrować tematy MQTT komunikatów za pomocą filtrowania właściwości "temat" w schemacie zdarzeń w chmurze. Subskrypcje usługi Event Grid obsługują bezpłatne proste filtrowanie tematów przez określenie wartości początkowej lub końcowej dla tematu. Przykład:
- Jeśli każdy pojazd publikuje swoją lokalizację we własnym temacie (pojazdy/pojazd1/gps, pojazdy/pojazd2/gps itp.), możesz użyć filtru: temat kończy się "gps", aby kierować tylko wszystkie wiadomości lokalizacji.
- Jeśli maszyny z każdej sekcji każdej fabryki publikują w tematach, które naśladują hierarchię fabryki (na przykład factory1/area2/machine4/telemetria), można użyć filtru: temat rozpoczyna się od "factory1/area2/", aby kierować tylko komunikaty należące do facotry1 i obszar 2 do określonego punktu końcowego. Tę konfigurację można replikować w celu kierowania komunikatów z innych fabryk/obszarów do różnych punktów końcowych.
Możesz również skorzystać z zaawansowanego filtrowania subskrypcji zdarzeń w celu filtrowania na podstawie tematu MQTT przez filtrowanie właściwości podmiotu w schemacie zdarzeń w chmurze. Filtry zaawansowane umożliwiają ustawianie bardziej złożonych filtrów przez określenie operatora porównania, klucza i wartości.
Filtrowanie ładunków
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 w taki sposób, jak jest przekazywane w polu danych.
Ładunek JSON
Jeśli wyślesz ładunek JSON, zostanie on serializowany jako odpowiedni kod JSON i będzie można filtrować poszczególne właściwości w formacie JSON przy użyciu zaawansowanego filtrowania subskrypcji zdarzeń.
Na przykład: jeśli wyślesz następujący ładunek:
{
"Temp": 70,
"humidity": 40
}
Możesz użyć następującego filtru, aby filtrować wszystkie komunikaty z wartością temperatury powyżej 100:
"advancedFilters": [{
"operatorType": "NumberGreaterThan",
"key": "data.Temp",
"value": 100
}]
Ładunek inny niż JSON
Jeśli wyślesz ładunek inny niż JSON, który nadal jest UFT-8, zostanie serializowany jako ciąg JSON. Jeśli na przykład wyślesz następujący ładunek:
{
Hello Contoso.
}
Możesz użyć następującego filtru, aby filtrować wszystkie komunikaty zawierające słowo "Contoso":
"advancedFilters": [{
"operatorType": "StringContains",
"key": "data",
"value": "Contoso"
}]
Filtrowanie wzbogacania
Wzbogacania są dodawane do atrybutów usługi CloudEvent kierowanych i można je filtrować przy użyciu zaawansowanego filtrowania subskrypcji zdarzeń.
Jeśli na przykład dodano następujące wzbogacanie:
{
"key": "clienttype",
"value": "${client.attributes.type}"
}
Możesz użyć następującego filtru, aby filtrować wszystkie komunikaty pochodzące z klientów typu "sensor":
"advancedFilters": [{"
operatorType": "StringContains",
"key": "clienttype",
"value": "sensor"
}]
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