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

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 dan peristiwa ke titik akhir bawaan dan titik akhir kustom. Peristiwa yang dapat dirutekan termasuk peristiwa siklus hidup perangkat, peristiwa perubahan kembar perangkat, peristiwa perubahan kembar digital, dan peristiwa status koneksi perangkat.

  • 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. Untuk informasi selengkapnya, lihat kueri dalam perutean pesan.

Azure IoT Hub mendefinisikan format umum untuk semua olahpesan perangkat ke cloud untuk interoperabilitas lintas protokol.

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 informasi selengkapnya tentang tingkat IoT Hub dasar dan standar/gratis, lihat Memilih tingkat IoT Hub yang tepat untuk solusi Anda.

Titik akhir perutean

Setiap hub IoT memiliki titik akhir bawaan default (pesan/peristiwa) yang kompatibel dengan Azure Event Hubs. Anda juga dapat membuat titik akhir kustom yang menunjuk ke layanan lain di langganan Azure Anda.

Setiap pesan dirutekan ke semua titik akhir yang kueri peruteannya cocok. Dengan kata lain, sebuah pesan dapat dirutekan ke beberapa titik akhir. Jika sebuah pesan cocok dengan beberapa rute yang mengarah ke titik akhir yang sama, IoT Hub akan mengirimkan pesan ke titik akhir tersebut hanya sekali.

IoT Hub saat ini mendukung titik akhir berikut:

  • Titik Akhir bawaan
  • Kontainer Storage
  • Antrean Microsoft Azure Service Bus
  • Topik Microsoft Azure Service Bus
  • Event Hubs
  • Cosmos DB (pratinjau)

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. Jika Anda mengonfigurasi titik akhir menggunakan PowerShell atau Azure CLI, Anda perlu memberikan izin akses tulis.

Untuk mempelajari cara membuat titik akhir, lihat artikel berikut ini:

Pastikan Anda mengonfigurasi layanan Anda untuk mendukung throughput yang diharapkan. Misalnya, jika Anda menggunakan Azure Event Hubs sebagai titik akhir kustom, 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 Azure Service Bus sebagai titik akhir, Anda harus mengonfigurasi ukuran maksimum untuk memastikan antrean dapat menyimpan semua data yang masuk, hingga keluar oleh konsumen. Saat pertama kali mengonfigurasi solusi IoT, Anda mungkin perlu memantau titik akhir lain dan membuat penyesuaian yang diperlukan untuk beban aktual.

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

Titik Akhir bawaan

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 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). Azure Data Lake Storage akun adalah akun penyimpanan yang mendukung namespace hierarkis yang dibangun 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 pengodean JSON, Anda harus mengatur properti contentType ke properti application/json dan contentEncoding ke UTF-8 di properti sistem pesan. Kedua nilai ini tidak sensitif huruf besar/kecil. Jika pengodean konten tidak diatur, maka IoT Hub menulis pesan dalam format yang dikodekan base 64.

Format pengodean hanya dapat diatur ketika titik akhir penyimpanan blob dikonfigurasi; tidak dapat diedit untuk titik akhir yang ada

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 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. Contohnya:

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 Aktifkan namespace hierarkis dari bagian Data Lake Storage Gen2 tab Tingkat Lanjut, seperti yang ditunjukkan pada gambar berikut:

Cuplikan layar yang memperlihatkan cara memilih penyimpanan Azure Date Lake Gen2.

Antrean Azure Service Bus 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.

Azure Cosmos DB sebagai titik akhir perutean (pratinjau)

Anda dapat mengirim data langsung ke Azure Cosmos DB dari IoT Hub. Cosmos DB adalah layanan database multi-model hyperscale yang dikelola sepenuhnya. Ini memberikan latensi rendah dan ketersediaan tinggi, menjadikannya pilihan yang bagus untuk skenario seperti solusi terhubung dan manufaktur yang memerlukan analisis data hilir yang luas.

IoT Hub mendukung penulisan ke Cosmos DB di JSON (jika ditentukan dalam jenis konten pesan) atau sebagai biner yang dikodekan Base64.

Untuk mendukung skenario skala tinggi secara efektif, Anda dapat mengaktifkan kunci partisi sintetis untuk titik akhir Cosmos DB. Karena Cosmos DB adalah penyimpanan data hyperscale, semua data/dokumen yang ditulis ke dalamnya harus berisi bidang yang mewakili partisi logis. Setiap partisi logis memiliki ukuran maksimum 20 GB. Anda dapat menentukan nama properti kunci partisi dalam Nama kunci partisi. Nama properti kunci partisi ditentukan pada tingkat kontainer dan tidak dapat diubah setelah ditetapkan.

Anda dapat mengonfigurasi nilai kunci partisi sintetis dengan menentukan templat dalam templat kunci Partisi berdasarkan perkiraan volume data Anda. Misalnya, dalam skenario manufaktur, partisi logis Anda mungkin diharapkan mendekati batas maksimum 20 GB dalam sebulan. Dalam hal ini, Anda dapat menentukan kunci partisi sintetis sebagai kombinasi ID perangkat dan bulan. Nilai kunci partisi yang dihasilkan secara otomatis ditambahkan ke properti kunci partisi untuk setiap rekaman Cosmos DB baru, memastikan partisi logis dibuat setiap bulan untuk setiap perangkat.

Perhatian

Jika Anda menggunakan sistem yang ditetapkan identitas terkelola untuk mengautentikasi ke Cosmos DB, Anda harus menggunakan Azure CLI atau Azure PowerShell untuk menetapkan definisi peran bawaan Kontributor Data Bawaan Cosmos DB ke identitas. Penetapan peran untuk Cosmos DB saat ini tidak didukung dari portal Azure. Untuk informasi selengkapnya tentang berbagai peran, lihat Mengonfigurasi akses berbasis peran untuk Azure Cosmos DB. Untuk memahami penetapan peran melalui CLI, lihat Mengelola sumber daya peran Azure Cosmos DB SQL.

Merutekan ke titik akhir di langganan lain

Jika sumber daya titik akhir berada dalam langganan yang berbeda dari hub IoT Anda, Anda perlu mengonfigurasi hub IoT Anda sebagai layanan Microsoft tepercaya sebelum membuat titik akhir kustom. Saat Anda membuat titik akhir kustom, atur jenis Autentikasi ke identitas yang ditetapkan pengguna.

Untuk informasi selengkapnya, lihat Konektivitas keluar dari IoT Hub ke sumber daya Azure lainnya.

Kueri perutean

IoT Hub perutean pesan menyediakan kemampuan kueri untuk memfilter data sebelum merutekannya ke titik akhir. Setiap kueri perutean yang Anda konfigurasikan memiliki properti berikut:

Properti Deskripsi
Nama Nama unik yang mengidentifikasi kueri.
Sumber Asal aliran data yang akan ditindaklanjuti. Misalnya, telemetri perangkat.
Kondisi Ekspresi kueri untuk kueri perutean yang dijalankan terhadap properti aplikasi pesan, properti sistem, isi pesan, tag kembar perangkat, dan properti kembar perangkat untuk menentukan apakah cocok untuk titik akhir. Untuk informasi selengkapnya tentang membuat kueri, lihat sintaks kueri perutean pesan
Titik Akhir Nama titik akhir tempat IoT Hub mengirim pesan yang cocok dengan kueri. Kami menyarankan agar Anda memilih titik akhir di wilayah yang sama dengan IoT Hub Anda.

Satu pesan mungkin cocok dengan kondisi pada beberapa kueri perutean, dalam hal ini IoT Hub mengirimkan pesan ke titik akhir yang terkait dengan setiap kueri yang cocok. IoT Hub juga secara otomatis mendeduplikasi pengiriman pesan, jadi jika pesan cocok dengan beberapa kueri yang memiliki tujuan yang sama, pesan hanya ditulis sekali ke tujuan tersebut.

Untuk informasi selengkapnya, lihat sintaks kueri perutean pesan IoT Hub.

Membaca data yang telah dirutekan

Gunakan artikel 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 titik akhir 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 rute dibuat ke titik akhir tersebut. Jika tidak ada rute ke titik akhir bawaan dan rute fallback diaktifkan, hanya pesan yang tidak cocok dengan kondisi kueri apa pun pada rute yang akan dikirim ke titik akhir bawaan. Selain itu, jika semua rute yang ada dihapus, kemampuan rute fallback harus diaktifkan untuk menerima semua data di titik akhir bawaan.

Anda dapat mengaktifkan atau menonaktifkan rute fallback di portal Azure, dari bilah Perutean pesan. Anda juga dapat menggunakan Azure Resource Manager untuk FallbackRouteProperties untuk menggunakan titik akhir kustom untuk rute fallback.

Kejadian non-telemetri

Selain telemetri perangkat, perutean pesan juga memungkinkan pengiriman peristiwa non-telemetri, termasuk:

  • Kejadian perubahan kembar perangkat
  • Kejadian siklus hidup perangkat
  • Peristiwa siklus hidup pekerjaan perangkat
  • Kejadian perubahan digital ganda
  • Kejadian status koneksi perangkat

Misalnya, jika rute dibuat dengan sumber data yang diatur ke Peristiwa Perubahan Kembar Perangkat, IoT Hub mengirim pesan ke titik akhir yang berisi perubahan pada kembar perangkat. Demikian pula, jika rute dibuat dengan sumber data yang diatur ke Peristiwa Siklus Hidup Perangkat, IoT Hub mengirim pesan yang menunjukkan apakah perangkat atau modul 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 yang diatur ke Peristiwa Perubahan Kembar Digital dan IoT Hub mengirim pesan setiap kali properti kembar digital diatur atau diubah, kembar digital diganti, atau ketika peristiwa perubahan terjadi untuk perangkat kembar yang mendasar. Terakhir, jika rute dibuat dengan sumber data yang diatur ke Peristiwa Status Koneksi Perangkat, IoT Hub mengirim pesan yang menunjukkan apakah perangkat tersambung 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, operasi ini sama dengan melampirkan atau mentransfer pesan pada jalur tautan yang sesuai.

IoT Hub tidak melaporkan setiap perangkat yang terhubung dan terputus, melainkan menerbitkan status koneksi saat ini yang diambil pada rekam jepret berkala 60 detik. Menerima peristiwa status koneksi yang sama dengan nomor urutan yang berbeda atau peristiwa status koneksi yang berbeda berarti bahwa ada perubahan status koneksi perangkat selama jendela 60 detik.

Menguji 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 atau tidak cocok dengan kueri, atau jika pengujian tidak dapat dijalankan karena pesan sampel atau sintaks kueri salah. Untuk mempelajari lebih lanjut, lihat Menguji Rute dan Menguji Semua Rute.

Latensi

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

Dalam kebanyakan kasus, peningkatan rata-rata latensi kurang dari 500 milidetik. Tetapi, latensi yang Anda alami dapat bervariasi dan dapat lebih tinggi bergantung pada tingkat IoT hub dan arsitektur solusi Anda. 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 end-to-end.

Pecahkan 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 dipecah berdasarkan kategori fungsi, lihat bagian Metrikreferensi Data Azure IoT Hub 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 selengkapnya tentang menggunakan metrik dan log sumber daya dengan IoT Hub, lihat Memantau Azure IoT Hub.

Anda dapat menggunakan REST API Get Endpoint Health untuk mendapatkan status kesehatan titik akhir.

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

Langkah berikutnya

Untuk mempelajari cara membuat rute pesan, lihat: