Delen via


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:

Concepten: