Freigeben über


Filtern von weitergeleiteten MQTT-Nachrichten

Sie können die Filterfunktion des Event Grid-Abonnements verwenden, um die weitergeleiteten MQTT-Nachrichten zu filtern.

Themenfilterung

Sie können nach den MQTT-Themen der Nachrichten filtern, indem Sie nach der Eigenschaft „subject“ im Cloudereignisschema filtern. Event Grid-Abonnements unterstützen eine kostenlose einfache Betrefffilterung, indem sie einen Start- oder Endwert für den Betreff angeben. Beispiel:

  • Wenn jedes Fahrzeug seinen Standort in einem eigenen Thema veröffentlicht (vehicles/vehicle1/gps, vehicles/vehicle2/gps usw.), können Sie den folgenden Filter verwenden: Betreff endet mit „gps“, um nur alle Standortmeldungen weiterzuleiten.
  • Wenn Maschinen aus jedem Bereich einzelner Fabriken zu Themen veröffentlichen, die den Fabrikverlauf imitieren (z. B. factory1/area2/machine4/telemetry), können Sie den folgenden Filter verwenden: Betreff beginnt mit „factory1/area2/“, um nur die Nachrichten an einen bestimmten Endpunkt weiterzuleiten, die zu „factory1“ und „area 2“ gehören. Sie können diese Konfiguration replizieren, um Nachrichten von anderen Fabriken/Bereichen an verschiedene Endpunkte weiterzuleiten.

Sie können auch die Vorteile der erweiterten Filterung des Ereignisabonnements nutzen, um anhand des MQTT-Themas zu filtern, indem Sie die Eigenschaft „subject“ im Cloudereignisschema filtern. Mit den erweiterten Filtern können Sie komplexere Filter festlegen, indem Sie einen Vergleichsoperator, einen Schlüssel und einen Wert angeben.

Nutzdatenfilterung

Für MQTT v5-Nachrichten mit dem Inhaltstyp = „application/json; charset=utf-8“ oder mit einem Nutzdatenformatindikator = 1 werden die Nutzdaten im Datenobjekt weitergeleitet, und die Nachricht wird als JSON serialisiert (oder als JSON-Zeichenfolge, wenn die Nutzdaten kein JSON sind). Wenn Sie den Inhaltstyp und/oder den Nutzdatenformatindikator festlegen, können Sie nach Ihren Nutzdateneigenschaften filtern, da die Nutzdaten unverändert im Datenfeld weitergeleitet werden.

JSON-Nutzlast

Wenn Sie JSON-Nutzdaten senden, werden diese als richtige JSON-Daten serialisiert und Sie können mithilfe der erweiterten Filterung des Ereignisabonnements nach jeder Eigenschaft in Ihrem JSON-Code filtern.

Wenn Sie beispielsweise die folgenden Nutzdaten senden:

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

Sie können den folgenden Filter verwenden, um alle Nachrichten mit einem Temperaturwert über 100 zu filtern:

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

Nicht-JSON-Nutzdaten

Wenn Sie Nicht-JSON-Nutzdaten senden, die noch UFT-8 sind, werden sie als JSON-Zeichenfolge serialisiert. Wenn Sie beispielsweise die folgenden Nutzdaten senden:

{
	Hello Contoso.
}

Sie können den folgenden Filter verwenden, um alle Nachrichten zu filtern, die das Wort „Contoso“ enthalten:

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

Anreicherungsfilterung

Anreicherungen werden zu den Attributen Ihres Routingereignisses hinzugefügt, und Sie können mithilfe der erweiterten Filterung des Ereignisabonnements nach ihnen filtern.

Wenn Sie z. B. die folgende Anreicherung hinzugefügt haben:

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

Sie können den folgenden Filter verwenden, um alle Nachrichten zu filtern, die von Ihren Clients vom Typ „Sensor“ kommen:

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

Nächste Schritte:

In den folgenden Artikeln erfahren Sie mehr über Routing:

Schnellstart:

Konzepte: