Share via


MQTT Yönlendirilmiş İletileri Filtreleme

Yönlendirilen MQTT iletilerini filtrelemek için Event Grid Aboneliğinin filtreleme özelliğini kullanabilirsiniz.

Konu filtreleme

Bulut Olayı şemasındaki "subject" özelliğine filtre uygulama yoluyla iletilerin MQTT konularını filtreleyebilirsiniz. Event Grid Abonelikleri, konu için bir başlangıç veya bitiş değeri belirterek ücretsiz basit konu filtrelemesini destekler. Örneğin,

  • Her araç kendi konu başlığında (araçlar/araç1/gps, araçlar/araç2/gps vb.) konumunu yayımlıyorsa, filtreyi kullanabilirsiniz: konu yalnızca tüm konum mesajlarını yönlendirmek için "gps" ile biter.
  • Her fabrikanın her bölümündeki makineler fabrika hiyerarşisini taklit eden konularda yayımlıyorsa (örneğin, fabrika1/alan2/makine4/telemetri), filtreyi kullanabilirsiniz: konu yalnızca facotry1 ve alan 2'ye ait iletileri belirli bir uç noktaya yönlendirmek için "fabrika1/alan2/" ile başlar. Diğer fabrikalardan/alanlardan gelen iletileri farklı uç noktalara yönlendirmek için bu yapılandırmayı çoğaltabilirsiniz.

Ayrıca, Bulut Olay Şeması'ndaki konu özelliğine göre filtreleme yoluyla MQTT konusuna göre filtrelemek için Olay Aboneliği'nin gelişmiş filtreleme özelliğinden de yararlanabilirsiniz. Gelişmiş filtreler bir karşılaştırma işleci, anahtar ve değer belirterek daha karmaşık filtreler ayarlamanıza olanak tanır.

Yük filtreleme

İçerik türü= "application/json; MQTT v5 iletileri için; charset=utf-8" veya bir yük biçimi göstergesi=1'in veri nesnesine iletilir ve ileti bir JSON (veya yük JSON değilse JSON dizesi) olarak serileştirilir. İçerik türünü ve/veya yük biçimi göstergesini ayarlamak, veri alanında olduğu gibi iletilen yük özelliklerinizi filtrelemenizi sağlar.

JSON yükü

Bir JSON yükü gönderirseniz, bu yük uygun bir JSON olarak seri hale getirilir ve Olay Aboneliği'nin gelişmiş filtrelemesini kullanarak JSON'unuzda her özelliği filtreleyebilirsiniz.

Örneğin: Aşağıdaki yükü gönderirseniz:

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

Sıcaklık değeri 100'ün üzerinde olan tüm iletileri filtrelemek için aşağıdaki filtreyi kullanabilirsiniz:

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

JSON olmayan yük

Hala UFT-8 olan JSON olmayan bir yük gönderirseniz, JSON dizesi olarak seri hale getirilir. Örneğin, aşağıdaki yükü gönderirseniz:

{
	Hello Contoso.
}

"Contoso" sözcüğünü içeren tüm iletileri filtrelemek için aşağıdaki filtreyi kullanabilirsiniz:

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

Zenginleştirme filtreleme

Zenginleştirmeler, yönlendirilen CloudEvent özniteliklerinize eklenir ve Olay Aboneliği'nin gelişmiş filtrelemesini kullanarak bunları filtreleyebilirsiniz.

Örneğin, aşağıdaki zenginleştirmeyi eklediyseniz:

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

İstemcilerinizden gelen "algılayıcı" türündeki tüm iletileri filtrelemek için aşağıdaki filtreyi kullanabilirsiniz:

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

Sonraki adımlar:

Yönlendirme hakkında daha fazla bilgi edinmek için aşağıdaki makaleleri kullanın:

Hızlı Başlangıç:

Kavramlar: