Filteren van door MQTT gerouteerde berichten
U kunt de filterfunctie van het Event Grid-abonnement gebruiken om de gerouteerde MQTT-berichten te filteren.
Onderwerpfiltering
U kunt filteren op de MQTT-onderwerpen van de berichten door te filteren op de eigenschap Onderwerp in het cloud-gebeurtenisschema. Event Grid-abonnementen bieden ondersteuning voor gratis eenvoudige filtering van onderwerpen door een begin- of eindwaarde voor het onderwerp op te geven. Voorbeeld:
- Als elk voertuig zijn locatie publiceert op zijn eigen onderwerp (voertuigen/voertuig1/gps, voertuigen/voertuig2/gps, enz.), kunt u het filter gebruiken: onderwerp eindigt met "gps" om alleen alle locatieberichten te routeren.
- Als machines uit elke sectie van elke fabriek publiceren op onderwerpen die de fabriekshiƫrarchie nabootsen (bijvoorbeeld factory1/area2/machine4/telemetry), kunt u het filter gebruiken: onderwerp begint met 'factory1/area2/' om alleen de berichten te routeren die deel uitmaken van facotry1 en gebied 2 naar een specifiek eindpunt. U kunt deze configuratie repliceren om berichten van andere factory's/gebieden naar verschillende eindpunten te routeren.
U kunt ook profiteren van het geavanceerde filter van het gebeurtenisabonnement om te filteren op basis van het MQTT-onderwerp door te filteren op de onderwerpeigenschap in het Cloud Event Schema. Met geavanceerde filters kunt u complexere filters instellen door een vergelijkingsoperator, sleutel en waarde op te geven.
Nettolading filteren
Voor MQTT v5-berichten van inhoudstype= "application/json; charset=utf-8" of van een payload format indicator=1, de nettolading wordt doorgestuurd in het gegevensobject en het bericht wordt geserialiseerd als een JSON (of een JSON-tekenreeks als de nettolading geen JSON is). Als u het inhoudstype en/of de indicator voor de nettoladingnotatie instelt, kunt u filteren op de eigenschappen van de nettolading, zoals in het gegevensveld wordt doorgestuurd.
JSON-nettolading
Als u een JSON-nettolading verzendt, wordt deze geserialiseerd als een juiste JSON en kunt u filteren op elke eigenschap in uw JSON met behulp van geavanceerde filters van het gebeurtenisabonnement.
Bijvoorbeeld: als u de volgende nettolading verzendt:
{
"Temp": 70,
"humidity": 40
}
U kunt het volgende filter gebruiken om alle berichten met een temperatuurwaarde van meer dan 100 te filteren:
"advancedFilters": [{
"operatorType": "NumberGreaterThan",
"key": "data.Temp",
"value": 100
}]
Niet-JSON-nettolading
Als u een niet-JSON-nettolading verzendt die nog steeds UFT-8 is, wordt deze geserialiseerd als een JSON-tekenreeks. Als u bijvoorbeeld de volgende nettolading verzendt:
{
Hello Contoso.
}
U kunt het volgende filter gebruiken om alle berichten te filteren die het woord 'Contoso' bevatten:
"advancedFilters": [{
"operatorType": "StringContains",
"key": "data",
"value": "Contoso"
}]
Verrijkingsfilters
Verrijkingen worden toegevoegd aan de kenmerken van uw gerouteerde CloudEvent en u kunt hierop filteren met behulp van geavanceerde filters van event subscription.
Als u bijvoorbeeld de volgende verrijking hebt toegevoegd:
{
"key": "clienttype",
"value": "${client.attributes.type}"
}
U kunt het volgende filter gebruiken om alle berichten die afkomstig zijn van uw clients van het type Sensor te filteren:
"advancedFilters": [{"
operatorType": "StringContains",
"key": "clienttype",
"value": "sensor"
}]
Volgende stappen:
Gebruik de volgende artikelen voor meer informatie over routering:
Quickstart:
- Zelfstudie: MQTT-berichten routeren naar Azure Event Hubs met behulp van naamruimteonderwerpen
- Zelfstudie: MQTT-berichten routeren naar Azure Functions met behulp van aangepaste onderwerpen