Sdílet prostřednictvím


Filtrování směrovaných zpráv MQTT

Pomocí funkce filtrování odběru služby Event Grid můžete filtrovat směrované zprávy MQTT.

Filtrování témat

Témata MQTT zpráv můžete filtrovat pomocí filtrování vlastnosti Předmět ve schématu cloudových událostí. Odběry služby Event Grid podporují bezplatné jednoduché filtrování předmětu zadáním počáteční nebo koncové hodnoty předmětu. Příklad:

  • Pokud každé vozidlo publikuje svou polohu na vlastním tématu (vozidla/vozidlo1/gps, vozidla/vozidlo2/gps atd.), můžete použít filtr: předmět končí "gps" a směruje pouze všechny zprávy o poloze.
  • Pokud počítače z každé části každé továrny publikují na témata, která napodobují hierarchii továrny (například factory1/area2/machine4/telemetry), můžete použít filtr: předmět začíná na "factory1/area2/" a směruje pouze zprávy, které patří do továrny1 a oblast 2 do konkrétního koncového bodu. Tuto konfiguraci můžete replikovat tak, aby směrovaly zprávy z jiných továren nebo oblastí do různých koncových bodů.

Rozšířené filtrování odběru událostí můžete využít také k filtrování na základě tématu MQTT prostřednictvím filtrování vlastnosti předmětu ve schématu událostí cloudu. Rozšířené filtry umožňují nastavit složitější filtry zadáním operátoru porovnání, klíče a hodnoty.

Filtrování datové části

Pro zprávy MQTT v5 typu obsahu= "application/json; charset=utf-8" nebo indikátor formátu datové části=1, datová část se předá v datovém objektu a zpráva se serializuje jako JSON (nebo řetězec JSON, pokud datová část není JSON). Nastavení typu obsahu nebo indikátor formátu datové části umožňuje filtrovat vlastnosti datové části tak, jak se předává v datovém poli tak, jak je.

Datová část JSON

Pokud odešlete datovou část JSON, serializuje se jako správný JSON a budete moct filtrovat každou vlastnost ve formátu JSON pomocí rozšířeného filtrování odběru událostí.

Pokud například odešlete následující datovou část:

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

Pomocí následujícího filtru můžete filtrovat všechny zprávy s hodnotou teploty nad 100:

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

Datová část mimo JSON

Pokud odešlete datovou část mimo JSON, která je stále UFT-8, serializuje se jako řetězec JSON. Pokud například odešlete následující datovou část:

{
	Hello Contoso.
}

Pomocí následujícího filtru můžete filtrovat všechny zprávy, které obsahují slovo Contoso:

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

Filtrování rozšiřování

Rozšíření se přidají do atributů směrovaného CloudEventu a můžete je filtrovat pomocí rozšířeného filtrování odběru událostí.

Pokud jste například přidali následující obohacení:

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

Pomocí následujícího filtru můžete filtrovat všechny zprávy přicházející z klientů typu "sensor":

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

Další kroky:

Další informace o směrování najdete v následujících článcích:

Rychlý start:

Koncepty: