Bagikan melalui


Pemfilteran Pesan Rute MQTT

Anda dapat menggunakan kemampuan pemfilteran Langganan Event Grid untuk memfilter pesan MQTT yang dirutekan.

Pemfilteran topik

Anda dapat memfilter topik MQTT pesan melalui pemfilteran pada properti "subjek" dalam skema Peristiwa Cloud. Langganan Event Grid mendukung pemfilteran subjek sederhana gratis dengan menentukan nilai awal atau akhir untuk subjek. Contohnya,

  • Jika setiap kendaraan menerbitkan lokasinya dengan topiknya sendiri (kendaraan/kendaraan1/gps, kendaraan/kendaraan2/gps, dll.), Anda dapat menggunakan filter: subjek diakhir dengan "gps" untuk merutekan hanya semua pesan lokasi.
  • Jika mesin dari setiap bagian dari setiap pabrik menerbitkan topik yang meniru hierarki pabrik (misalnya, factory1/area2/machine4/telemetri), Anda dapat menggunakan filter: subjek dimulai dengan "factory1/area2/" untuk merutekan hanya pesan milik pabrik1 dan area 2 ke titik akhir tertentu. Anda dapat mereplikasi konfigurasi ini untuk merutekan pesan dari pabrik/area lain ke titik akhir yang berbeda.

Anda juga dapat memanfaatkan pemfilteran lanjutan Langganan Peristiwa untuk memfilter berdasarkan topik MQTT melalui pemfilteran pada properti subjek di Skema Peristiwa Cloud. Filter tingkat lanjut memungkinkan Anda mengatur filter yang lebih kompleks dengan menentukan operator perbandingan, kunci, dan nilai.

Pemfilteran payload

Untuk pesan MQTT v5 jenis konten= "application/json; charset=utf-8" atau dari indikator format payload=1, payload akan diteruskan dalam objek data, dan pesan akan diserialisasikan sebagai JSON (atau string JSON jika payload bukan JSON). Mengatur jenis konten dan/atau indikator format payload memungkinkan Anda memfilter properti payload Anda seperti yang diteruskan dalam bidang data apa adanya.

Payload JSON

Jika Anda mengirim payload JSON, payload tersebut akan diserialisasikan sebagai JSON yang tepat dan Anda akan dapat memfilter setiap properti di JSON Anda, menggunakan pemfilteran lanjutan Langganan Peristiwa.

Misalnya: jika Anda mengirim payload berikut:

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

Anda dapat menggunakan filter berikut untuk memfilter semua pesan dengan nilai suhu lebih dari 100:

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

Payload non-JSON

Jika Anda mengirim payload non-JSON yang masih UFT-8, payload tersebut akan diserialisasikan sebagai string JSON. Misalnya, jika Anda mengirim payload berikut:

{
	Hello Contoso.
}

Anda dapat menggunakan filter berikut untuk memfilter semua pesan yang menyertakan kata "Contoso":

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

Pemfilteran pengayaan

Pengayaan ditambahkan ke atribut CloudEvent yang dirutekan, dan Anda dapat memfilternya menggunakan pemfilteran lanjutan Langganan Peristiwa.

Misalnya, jika Anda menambahkan pengayaan berikut:

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

Anda dapat menggunakan filter berikut untuk memfilter semua pesan yang berasal dari klien Anda dengan jenis "sensor":

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

Langkah berikutnya:

Gunakan artikel berikut untuk mempelajari selengkapnya tentang perutean:

Mulai Cepat:

Konsep: