Merutekan Pesan MQTT di Azure Event Grid

Event Grid memungkinkan Anda merutekan pesan MQTT anda ke layanan Azure atau webhook untuk diproses lebih lanjut. Dengan demikian, Anda dapat membangun solusi end-to-end dengan memanfaatkan data IoT Anda untuk analisis data, penyimpanan, dan visualisasi, di antara kasus penggunaan lainnya.

Diagram of the MQTT message routing.

Bagaimana cara menggunakan fitur perutean?

Merutekan pesan dari klien Anda ke layanan Azure atau titik akhir kustom memungkinkan Anda memaksimalkan manfaat data ini. Berikut ini adalah beberapa dari banyak kasus penggunaan untuk memanfaatkan fitur ini:

  • Analisis Data: mengekstrak dan menganalisis pesan yang dirutekan dari klien Anda untuk mengoptimalkan solusi Anda. Misalnya, analisis telemetri komputer Anda untuk memprediksi kapan harus menjadwalkan pemeliharaan sebelum kegagalan terjadi untuk menghindari keterlambatan dan kerusakan lebih lanjut.
  • Aplikasi tanpa server: picu fungsi tanpa server berdasarkan pesan yang dirutekan dari klien Anda. Misalnya, ketika sensor gerakan mendeteksi gerakan, kirim pemberitahuan ke personel keamanan untuk mengatasinya.
  • Visualisasi Data: membangun visualisasi data yang dirutekan dari klien Anda untuk dengan mudah mewakili dan memahami data serta menyoroti tren dan outlier.

Konfigurasi perutean:

Konfigurasi perutean memungkinkan Anda mengirim semua pesan MQTT dari klien Anda ke topik namespace Layanan Event Grid atau topik kustom Event Grid. Setelah pesan berada dalam topik, Anda dapat mengonfigurasi langganan peristiwa untuk menggunakan pesan dari topik tersebut. Gunakan langkah-langkah tingkat tinggi berikut untuk mencapai konfigurasi ini:

  • Topik namespace sebagai tujuan perutean:
    • Buat topik namespace Layanan Event Grid tempat semua pesan MQTT akan dirutekan.
    • Buat langganan peristiwa jenis push untuk merutekan pesan ini ke salah satu layanan Azure yang didukung atau webhook kustom atau langganan peristiwa jenis antrean untuk menarik pesan langsung dari topik namespace melalui aplikasi Anda.
    • Atur konfigurasi perutean yang mengacu pada topik yang Anda buat di langkah pertama.

Diagram of the MQTT message routing to namespace topics.

Diagram of the MQTT message routing to custom topics.

Catatan

Menonaktifkan akses jaringan publik pada namespace layanan akan menyebabkan perutean MQTT gagal.

Perbedaan antara topik namespace layanan dan topik kustom sebagai tujuan perutean

Tabel berikut ini memperlihatkan perbedaan antara topik namespace layanan dan topik kustom sebagai tujuan perutean. Untuk perincian terperinci tentang kuota dan batasan mana yang disertakan dalam setiap sumber daya Event Grid, lihat Kuota dan batasan.

Titik perbandingan Topik namespace Topik kustom
Throughput Tinggi, hingga 40 MB/dtk (ingress) dan 80 MB/dtk (egress) Rendah, hingga 5 MB/dtk (masuk dan keluar)
Pengiriman penarikan Ya
Mendorong pengiriman ke Azure Event Hubs Ya (dalam pratinjau) Ya
Pengiriman push ke layanan Azure (Functions, Webhooks, Bus Layanan antrean dan topik, koneksi hibrid relai, dan antrean penyimpanan) Ya
Retensi pesan 7 hari 1 hari
Persyaratan penetapan peran Tidak diperlukan karena broker MQTT dan topik namespace berada di bawah namespace yang sama Diperlukan karena namespace layanan yang menghosting fungsionalitas broker MQTT dan topik kustom adalah sumber daya yang berbeda

Persyaratan topik kustom Event Grid untuk perutean

Topik kustom Event Grid yang digunakan untuk perutean perlu memenuhi persyaratan berikut:

  • Ini perlu diatur untuk menggunakan Cloud Event Schema v1.0
  • Ini harus berada di wilayah yang sama dengan namespace layanan.
  • Anda perlu menetapkan peran "Pengirim Data EventGrid" untuk diri Anda sendiri atau ke identitas terkelola yang dipilih pada topik kustom Event Grid sebelum konfigurasi perutean diterapkan.
    • Di portal, buka sumber daya topik Event Grid yang dibuat.
    • Di item menu "Kontrol akses (IAM)", pilih Tambahkan penetapan peran.
    • Di tab "Peran", pilih "Pengirim Data Event Grid", lalu pilih Berikutnya.
    • Di tab "Anggota", pilih +Pilih anggota, lalu ketik nama pengguna AD Anda di kotak "Pilih" yang muncul (misalnya, user@contoso.com).
    • Pilih nama pengguna AD Anda, lalu pilih "Tinjau + tetapkan"

Konfigurasi portal Microsoft Azure

Gunakan langkah-langkah berikut untuk mengonfigurasi perutean:

  • Buka namespace Anda di portal Azure.
  • Di bawah Perutean, centang Aktifkan Perutean.
  • Di bawah jenis topik, pilih topik Namespace atau Topik kustom
  • Di bawah topik, pilih topik yang telah Anda buat di mana semua pesan MQTT akan dirutekan.
  • Jika topik kustom dipilih, bagian Identitas Terkelola untuk Pengiriman akan muncul. Pilih salah satu opsi berikut untuk identitas yang akan digunakan untuk mengautentikasi broker MQTT saat mengirimkan pesan MQTT ke topik kustom:
    • Tidak ada: dalam hal ini, Anda perlu menetapkan peran "Pengirim Data EventGrid" untuk diri Anda sendiri pada topik kustom.
    • Identitas yang ditetapkan sistem: dalam hal ini, Anda perlu mengaktifkan identitas yang ditetapkan sistem pada namespace sebagai prasyarat dan menetapkan peran "Pengirim Data EventGrid" ke identitas yang ditetapkan sistem pada topik kustom.
    • Identitas yang ditetapkan pengguna: dalam hal ini, Anda perlu mengaktifkan identitas yang ditetapkan pengguna pada namespace sebagai prasyarat dan menetapkan peran "Pengirim Data EventGrid" ke identitas yang dipilih pada topik kustom.
      • Jika Identitas yang ditetapkan pengguna dipilih, drop-down tampaknya memungkinkan Anda memilih identitas yang diinginkan.
  • Pilih Terapkan.

Screenshot showing the routing configuration through the portal.

Untuk petunjuk konfigurasi pengayaan, buka Konfigurasi portal pengayaan.

Konfigurasi CLI Azure

az resource create --resource-type Microsoft.EventGrid/namespaces --id /subscriptions/<Subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.EventGrid/namespaces/<Namespace Name> --is-full-object --api-version 2023-06-01-preview --properties @./resources/NS.json

NS.json

"properties": {
	"inputSchema": "CloudEventSchemaV1_0",
	"topicSpacesConfiguration": {
	    "state": "Enabled",           
	    "routeTopicResourceId": "/subscriptions/<Subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.EventGrid/topics/<Event Grid topic name>",
        "routingIdentityInfo": {
                "type": "UserAssigned", //Allowed values: None, SystemAssigned, UserAssigned
                "userAssignedIdentity": "/subscriptions/<Subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<User-assigned identity>" //needed only if UserAssigned was the value of type
            },

	}
}

Untuk petunjuk konfigurasi pengayaan, buka Konfigurasi CLI pengayaan.

Perilaku perutean pesan MQTT

Saat merutekan pesan MQTT ke topik kustom, Event Grid menyediakan pengiriman yang tahan lama karena mencoba mengirimkan setiap pesan setidaknya sekali segera. Jika ada kegagalan, Event Grid mencoba kembali pengiriman atau menghilangkan pesan yang dimaksudkan untuk dirutekan. Event Grid tidak menjamin pesanan untuk pengiriman peristiwa, sehingga pelanggan mungkin menerimanya tidak berurutan.

Tabel berikut menjelaskan perilaku perutean pesan MQTT berdasarkan kesalahan yang berbeda.

Kesalahan Deskripsi kesalahan Perilaku
TopicNotFoundError Topik kustom yang dikonfigurasi untuk menerima semua pesan rute MQTT dihapus. Event Grid menghilangkan pesan MQTT yang dimaksudkan untuk dirutekan.
AuthenticationError Peran Pengirim Data EventGrid untuk topik kustom yang dikonfigurasi sebagai tujuan untuk pesan rute MQTT dihapus. Event Grid menghilangkan pesan MQTT yang dimaksudkan untuk dirutekan.
TooManyRequests Jumlah pesan yang dirutekan MQTT per detik melebihi batas penerbitan untuk topik kustom. Event Grid mencoba kembali untuk merutekan pesan MQTT.
ServiceError Kesalahan server yang tidak terduga karena alasan operasional server. Event Grid mencoba kembali untuk merutekan pesan MQTT.

Selama percobaan ulang, Event Grid menggunakan kebijakan coba lagi backoff eksponensial untuk perutean pesan MQTT. Azure Event Grid mencoba lagi pengiriman pada jadwal berikut dengan upaya terbaik:

  • 10 detik
  • 30 detik
  • 1 menit
  • 5 menit
  • 10 menit
  • 30 menit
  • 1 jam
  • 3 jam
  • 6 jam
  • Setiap 12 jam

Jika pesan MQTT rute yang diantrekan untuk redelivery berhasil, Event Grid mencoba menghapus pesan dari antrean coba lagi berdasarkan upaya terbaik, tetapi duplikat mungkin masih diterima.

Langkah berikutnya:

Gunakan artikel berikut untuk mempelajari selengkapnya tentang perutean:

Mulai Cepat:

Konsep: