Gunakan perutean pesan IoT Hub untuk mengirim pesan perangkat-ke-awan ke titik akhir yang berbeda

Catatan

Beberapa fitur yang disebutkan dalam artikel ini, seperti pesan cloud-ke-perangkat, kembar perangkat, dan manajemen perangkat, hanya tersedia di tingkat standar IoT Hub. Untuk mengetahui informasi selengkapnya tentang tingkat IoT Hub standar dan dasar, lihat Cara memilih tingkat IoT Hub yang tepat.

Perutean pesan memungkinkan Anda mengirim pesan dari perangkat Anda ke layanan cloud secara otomatis, dapat diskalakan, dan andal. Perutean pesan dapat digunakan untuk:

  • Mengirim pesan telemetri perangkat serta peristiwa yaitu, peristiwa siklus hidup perangkat, peristiwa perubahan kembar perangkat, peristiwa perubahan kembar digital, dan peristiwa status sambungan perangkat ke titik akhir bawaan dan titik akhir khusus. Pelajari tentang titik akhir perutean. Untuk mempelajari lebih lanjut tentang peristiwa yang dikirim dari perangkat IoT Plug and Play, lihat Memahami IoT Plug and Play kembar digital.

  • Memfilter data sebelum merutekannya ke berbagai titik akhir dengan menerapkan kueri kaya. Perutean pesan memungkinkan Anda untuk mengkueri properti pesan dan isi pesan serta tag kembar perangkat dan properti kembar perangkat. Pelajari selengkapnya tentang menggunakan kueri dalam perutean pesan.

IoT Hub memerlukan akses tulis ke titik akhir layanan ini agar perutean pesan berfungsi. Jika Anda mengonfigurasi titik akhir Anda melalui portal Azure, izin yang diperlukan ditambahkan untuk Anda. Pastikan Anda mengonfigurasi layanan Anda untuk mendukung throughput yang diharapkan. Misalnya, jika Anda menggunakan Azure Event Hubs sebagai titik akhir khusus, Anda harus mengonfigurasi unit throughput untuk hub peristiwa tersebut sehingga dapat menangani masuknya peristiwa yang Anda rencanakan untuk dikirim melalui perutean pesan IoT Hub. Demikian pula, saat menggunakan Antrean Bus Layanan sebagai titik akhir, Anda harus mengonfigurasi ukuran maksimum untuk memastikan antrean dapat menampung semua data yang diserap, hingga dikeluarkan oleh konsumen. Saat pertama kali mengonfigurasi solusi IoT, Anda mungkin perlu memantau titik akhir lain dan membuat penyesuaian yang diperlukan untuk beban aktual.

IoT Hub mendefinisikan format umum untuk semua olahpesan perangkat ke cloud untuk interoperabilitas lintas protokol. Jika sebuah pesan cocok dengan beberapa rute yang mengarah ke titik akhir yang sama, IoT Hub mengirimkan pesan ke titik akhir tersebut hanya sekali. Oleh karena itu, Anda tidak perlu mengonfigurasi deduplikasi pada antrean atau topik Bus Layanan Anda. Gunakan tutorial ini untuk mempelajari cara mengonfigurasi perutean pesan.

Titik akhir perutean

Hub IoT memiliki titik akhir bawaan default (pesan/acara) yang kompatibel dengan Azure Event Hubs. Anda dapat membuat titik akhir khusus untuk merutekan pesan dengan menautkan layanan lain dalam langganan Anda ke IoT Hub.

Setiap pesan dirutekan ke semua titik akhir yang kueri peruteannya cocok. Dengan kata lain, sebuah pesan dapat dirutekan ke beberapa titik akhir.

Jika titik akhir khusus Anda memiliki konfigurasi firewall, pertimbangkan untuk menggunakan pengecualian pihak pertama tepercaya Microsoft.

IoT Hub saat ini mendukung titik akhir berikut:

  • Titik Akhir bawaan
  • Azure Storage
  • Antrean Bus Layanan dan Topik Bus Layanan
  • Event Hubs

Titik akhir bawaan sebagai titik akhir perutean

Anda dapat menggunakan Integrasi Azure Event Hubs dan SDK standar untuk menerima pesan perangkat ke cloud dari titik akhir bawaan (pesan/peristiwa). Setelah Rute dibuat, data berhenti mengalir ke titik akhir bawaan kecuali jika Rute dibuat ke titik akhir tersebut. Bahkan jika tidak ada rute yang dibuat, rute fallback harus diaktifkan untuk mengarahkan pesan ke titik akhir bawaan. Fallback diaktifkan secara default jika Anda membuat hub Menggunakan portal atau CLI.

Azure Storage sebagai titik akhir perutean

Ada dua layanan penyimpanan IoT Hub yang dapat merutekan pesan ke: akun Azure Blob Storage dan Azure Data Lake Storage Gen2 (ADLS Gen2). Akun Azure Data Lake Storage adalah akun penyimpanan dengan dukungan namespace layanan hierarkis yang dibuat di atas penyimpanan blob. Keduanya menggunakan blob untuk penyimpanan.

IoT Hub mendukung penulisan data ke Azure Storage dalam format Apache Avro dan format JSON. Defaultnya adalah AVRO. Saat menggunakan enkode JSON, Anda harus mengatur Jenis konten ke application/json dan contentEncoding ke UTF-8 dalam pesan properti sistem. Kedua nilai ini tidak sensitif huruf besar/kecil. Jika pengoden konten tidak diatur maka IoT Hub akan menulis pesan dalam format yang dikodekan berbasis 64.

Format pengodean hanya dapat diatur ketika titik akhir penyimpanan blob dikonfigurasi; itu tidak dapat diedit untuk titik akhir yang ada. Untuk mengganti format pengodean untuk titik akhir yang ada, Anda harus menghapus titik akhir dan membuatnya kembali dengan format yang Anda inginkan. Salah satu strategi yang membantu mungkin adalah membuat titik akhir kustom baru dengan format pengodean yang Anda inginkan dan menambahkan rute paralel ke titik akhir tersebut. Dengan cara ini, Anda dapat memverifikasi data Anda sebelum menghapus titik akhir yang ada.

Anda dapat memilih format encoding menggunakan IoT Hub Create atau Update REST API, khususnya RoutingStorageContainerProperties, portal Azure, Azure CLI, atau Azure PowerShell. Gambar berikut ini menunjukkan cara memilih format pengodean di portal Azure.

Blob storage endpoint encoding

IoT Hub mengelompokkan pesan dan menulis data ke penyimpanan setiap kali kumpulan mencapai ukuran tertentu atau waktu tertentu telah berlalu. IoT Hub default ke konvensi penamaan file berikut:

{iothub}/{partition}/{YYYY}/{MM}/{DD}/{HH}/{mm}

Anda dapat menggunakan konvensi penamaan file apa pun, namun Anda harus menggunakan semua token yang terdaftar. IoT Hub akan menulis ke blob kosong jika tidak ada data untuk ditulis.

Sebaiknya membuat daftar blob atau file dan kemudian mengulanginya, untuk memastikan semua blob atau file dibaca tanpa membuat asumsi partisi. Rentang partisi berpotensi berubah selama kegagalan yang dimulai Microsoft atau failover manual IoT Hub. Anda dapat menggunakan Daftar API Blob untuk menghitung daftar blob atau Daftar ADLS Gen2 API untuk daftar file. Lihat contoh berikut sebagai panduan.

public void ListBlobsInContainer(string containerName, string iothub)
{
    var storageAccount = CloudStorageAccount.Parse(this.blobConnectionString);
    var cloudBlobContainer = storageAccount.CreateCloudBlobClient().GetContainerReference(containerName);
    if (cloudBlobContainer.Exists())
    {
        var results = cloudBlobContainer.ListBlobs(prefix: $"{iothub}/");
        foreach (IListBlobItem item in results)
        {
            Console.WriteLine(item.Uri);
        }
    }
}

Untuk membuat akun penyimpanan yang kompatibel dengan Azure Data Lake Gen2, buat akun penyimpanan V2 baru dan pilih diaktifkan pada bidang Namespace layanan hierarki pada tab Lanjutan seperti yang ditunjukkan pada gambar berikut:

Select Azure Date Lake Gen2 storage

Antrean Bus Layanan dan Topik Bus Layanan sebagai titik akhir perutean

Antrean Bus Layanan dan topik yang digunakan sebagai titik akhir IoT Hub tidak boleh mengaktifkan Sesi atau Deteksi Duplikat. Jika salah satu dari opsi tersebut diaktifkan, titik akhir akan muncul sebagai Tidak dapat dijangkau di portal Azure.

Azure Event Hubs sebagai titik akhir perutean

Terlepas dari titik akhir yang kompatibel dengan Azure Event Hubs bawaan, Anda juga dapat merutekan data ke titik akhir khusus dari Azure Event Hubs jenis.

Membaca data yang telah dirutekan

Anda dapat mengonfigurasi rute dengan mengikuti tutorial ini.

Gunakan tutorial berikut untuk mempelajari cara membaca pesan dari titik akhir.

Rute fallback

Rute fallback mengirimkan semua pesan yang tidak memenuhi kondisi kueri pada salah satu rute yang ada ke Azure Event Hubs bawaan (pesan/peristiwa), yang kompatibel dengan Azure Event Hubs. Jika perutean pesan diaktifkan, Anda dapat mengaktifkan kemampuan rute fallback. Setelah rute dibuat, data berhenti mengalir ke titik akhir bawaan, kecuali jika rute dibuat ke titik akhir tersebut. Jika tidak ada rute ke titik akhir bawaan dan rute cadangan diaktifkan, hanya pesan yang tidak cocok dengan kondisi kueri apa pun pada rute yang akan dikirim ke titik akhir bawaan. Juga, jika semua rute yang ada dihapus, rute fallback harus diaktifkan untuk menerima semua data di titik akhir bawaan.

Anda dapat mengaktifkan/menonaktifkan rute fallback di blade portal Microsoft Azure->Perutean Pesan. Anda juga dapat menggunakan Azure Resource Manager untuk FallbackRouteProperties guna menggunakan titik akhir khusus untuk rute fallback.

Kejadian non-telemetri

Selain telemetri perangkat, perutean pesan juga memungkinkan pengiriman peristiwa perubahan kembar perangkat, peristiwa siklus hidup perangkat, peristiwa perubahan kembar digital, dan peristiwa status sambungan perangkat. Misalnya, jika rute dibuat dengan sumber data diatur ke peristiwa perubahan kembar perangkat, IoT Hub mengirim pesan ke titik akhir yang berisi perubahan kembar perangkat. Demikian pula, jika rute dibuat dengan sumber data diatur ke peristiwa siklus hidup perangkat, IoT Hub akan mengirimkan pesan yang menunjukkan apakah perangkat atau modul telah dihapus atau dibuat. Untuk informasi selengkapnya tentang peristiwa siklus hidup perangkat, lihat Pemberitahuan siklus hidup perangkat dan modul. Saat menggunakan Azure IoT Plug and Play, pengembang dapat membuat rute dengan sumber data diatur ke peristiwa perubahan kembar digital dan IoT Hub mengirim pesan setiap kali properti kembar digital diatur atau diubah, kembaran digital diganti, atau ketika peristiwa perubahan terjadi untuk kembar perangkat yang mendasarinya. Terakhir, jika rute dibuat dengan sumber data disetel ke peristiwa status sambungan perangkat, IoT Hub akan mengirim pesan yang menunjukkan apakah perangkat terhubung atau terputus.

IoT Hub juga terintegrasi dengan Azure Event Grid untuk menerbitkan peristiwa perangkat guna mendukung integrasi waktu nyata dan otomatisasi alur kerja berdasarkan peristiwa ini. Lihat perbedaan utama antara perutean pesan dan Azure Event Grid untuk mempelajari mana yang paling sesuai untuk skenario Anda.

Batasan untuk peristiwa status sambungan perangkat

Peristiwa status koneksi perangkat tersedia untuk perangkat yang terhubung menggunakan protokol MQTT atau AMQP, atau menggunakan salah satu dari protokol ini melalui WebSockets. Permintaan yang dibuat hanya dengan HTTPS tidak akan memicu pemberitahuan status koneksi perangkat. Agar IoT Hub mulai mengirim peristiwa status koneksi perangkat, setelah membuka koneksi, perangkat harus memanggil operasi pesan yang diterima cloud-to-device atau operasi telemetri kirim perangkat-ke-cloud. Di luar SDK Azure IoT, di MQTT operasi ini sama dengan operasi SUBSCRIBE atau PUBLISH pada topik pesan yang sesuai. Melalui AMQP ini sama dengan melampirkan atau mentransfer pesan pada jalur tautan yang sesuai.

IoT Hub tidak melaporkan setiap perangkat terhubung dan terputus, melainkan menerbitkan status koneksi saat ini yang diambil pada snapshot 60 detik berkala. Menerima kejadian status sambungan yang sama dengan nomor urut yang berbeda maupun kejadian status sambungan yang berbeda, keduanya berarti bahwa ada perubahan dalam status koneksi perangkat selama 60 detik jendela.

Pengujian rute

Saat Anda membuat rute baru atau mengedit rute yang sudah ada, Anda harus menguji kueri rute dengan pesan sampel. Anda dapat menguji rute individu atau menguji semua rute sekaligus dan tidak ada pesan yang dirutekan ke titik akhir selama pengujian. portal Azure, Azure Resource Manager, Azure PowerShell, dan Azure CLI dapat digunakan untuk pengujian. Hasil membantu mengidentifikasi apakah pesan sampel cocok dengan kueri, pesan tidak cocok dengan kueri, atau pengujian tidak dapat dijalankan karena pesan sampel atau sintaksis kueri salah. Untuk mempelajari selengkapnya, lihat Uji Rute dan Uji semua rute.

Latensi

Saat Anda merutekan pesan telemetri perangkat ke cloud menggunakan titik akhir bawaan, ada sedikit peningkatan latensi ujung ke ujung setelah pembuatan rute pertama.

Dalam kebanyakan kasus, peningkatan rata-rata dalam latensi kurang dari 500 mdtk. Anda dapat memantau latensi menggunakan metrik Perutean: latensi pesan untuk pesan/peristiwa atau d2c.endpoints.latency.builtIn.events IoT Hub. Membuat atau menghapus rute apa pun setelah rute pertama tidak memengaruhi latensi ujung ke ujung.

Pemantauan dan pemecahan masalah

IoT Hub menyediakan beberapa metrik yang terkait dengan perutean dan titik akhir untuk memberi Anda ringkasan tentang kesehatan hub dan pesan yang dikirim. Untuk daftar semua metrik IoT Hub yang dikelompokkan menurut kategori fungsional, lihat Metrik dalam referensi data Pemantauan. Anda dapat melacak kesalahan yang terjadi selama evaluasi kueri perutean dan kesehatan titik akhir seperti yang dirasakan oleh IoT Hub dengan kategori rute di log sumber daya IoT Hub. Untuk mempelajari lebih lanjut tentang menggunakan metrik dan log sumber daya dengan IoT Hub, lihat Memantau IoT Hub.

Anda dapat menggunakan REST API Dapatkan Kesehatan Titik Akhir untuk mendapatkan status kesehatan titik akhir.

Gunakan panduan pemecahan masalah untuk perutean untuk detail lebih lanjut dan dukungan untuk pemecahan masalah perutean.

Langkah berikutnya