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:
- Självstudie: Dirigera MQTT-meddelanden till Azure Event Hubs med hjälp av namnområdesämnen
- Självstudie: Dirigera MQTT-meddelanden till Azure Functions med hjälp av anpassade ämnen