Udostępnij za pośrednictwem


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:

Pojęcia: