Dela via


Filtrering av MQTT-dirigerade meddelanden

Du kan använda Event Grid-prenumerationens filtreringsfunktion för att filtrera de dirigerade MQTT-meddelandena.

Ämnesfiltrering

Du kan filtrera på meddelandenas MQTT-ämnen genom filtrering på egenskapen "ämne" i cloud event-schemat. Event Grid-prenumerationer stöder kostnadsfri enkel ämnesfiltrering genom att ange ett start- eller slutvärde för ämnet. Exempel:

  • Om varje fordon publicerar sin plats på sitt eget ämne (fordon/fordon1/gps, fordon/fordon2/gps osv.), kan du använda filtret: ämnet slutar med "gps" för att dirigera endast alla platsmeddelanden.
  • Om datorer från varje avsnitt i varje fabrik publicerar ämnen som efterliknar fabrikshierarkin (till exempel factory1/area2/machine4/telemetri) kan du använda filtret: ämne börjar med "factory1/area2/" för att dirigera endast meddelanden som tillhör facotry1 och område 2 till en specifik slutpunkt. Du kan replikera den här konfigurationen för att dirigera meddelanden från andra fabriker/områden till olika slutpunkter.

Du kan också dra nytta av händelseprenumerationens avancerade filtrering för att filtrera baserat på MQTT-ämnet genom filtrering på ämnesegenskapen i molnhändelseschemat. Med avancerade filter kan du ange mer komplexa filter genom att ange en jämförelseoperator, nyckel och värde.

Nyttolastfiltrering

För MQTT v5-meddelanden av innehållstyp= "application/json; charset=utf-8" eller en indikator för nyttolastformat=1, nyttolasten vidarebefordras i dataobjektet och meddelandet serialiseras som en JSON (eller en JSON-sträng om nyttolasten inte är en JSON). Om du anger innehållstypen och/eller indikatorn för nyttolastformat kan du filtrera på dina nyttolastegenskaper som vidarebefordras i datafältet som det är.

JSON-nyttolast

Om du skickar en JSON-nyttolast serialiseras den som en korrekt JSON och du kan filtrera på varje egenskap i din JSON med hjälp av händelseprenumerationens avancerade filtrering.

Exempel: om du skickar följande nyttolast:

{
	"Temp": 70,
	"humidity": 40
}

Du kan använda följande filter för att filtrera alla meddelanden med temperaturvärde över 100:

"advancedFilters": [{
    "operatorType": "NumberGreaterThan",
    "key": "data.Temp",
    "value": 100
}]

Nyttolast som inte är JSON

Om du skickar en icke-JSON-nyttolast som fortfarande är UFT-8 serialiseras den som en JSON-sträng. Om du till exempel skickar följande nyttolast:

{
	Hello Contoso.
}

Du kan använda följande filter för att filtrera alla meddelanden som innehåller ordet "Contoso":

"advancedFilters": [{
    "operatorType": "StringContains",
    "key": "data",
    "value": "Contoso"
}]

Berikningsfiltrering

Berikanden läggs till i dina routade CloudEvent-attribut och du kan filtrera på dem med hjälp av händelseprenumerationens avancerade filtrering.

Om du till exempel har lagt till följande berikning:

{
	"key": "clienttype",
	"value": "${client.attributes.type}"
}

Du kan använda följande filter för att filtrera alla meddelanden som kommer från dina klienter av typen "sensor":

"advancedFilters": [{"
    operatorType": "StringContains",
    "key": "clienttype", 
    "value": "sensor"
}]

Nästa steg:

Använd följande artiklar för att lära dig mer om routning:

Snabbstart:

Koncept: