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

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 koneksi perangkat ke titik akhir bawaan dan titik akhir kustom. 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 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 Bus Layanan sebagai titik akhir, Anda harus mengonfigurasi ukuran maksimum untuk memastikan antrean dapat menyimpan semua data yang dimasukkan, 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.

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/peristiwa) yang kompatibel dengan Azure Event Hubs. Anda dapat membuat titik akhir kustom untuk merutekan pesan dengan menautkan layanan lain di langganan Anda ke hub IoT.

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
  • Kontainer Storage
  • Antrean Bus Layanan dan Topik Bus Layanan
  • Event Hubs
  • Cosmos DB (pratinjau)

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 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 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 akan menulis pesan dalam format yang dikodekan base 64.

Format pengodean hanya dapat diatur ketika titik akhir penyimpanan blob dikonfigurasi; itu tidak dapat diedit untuk titik akhir yang ada. Untuk beralih format pengodean untuk titik akhir yang sudah ada, Anda harus terlebih dahulu menghapus titik akhir, lalu 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.

Pengodean titik akhir penyimpanan blob.

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

Pilih penyimpanan Azure Date Lake Gen2.

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.

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. Anda dapat menyiapkan titik akhir Cosmos DB untuk perutean pesan dengan melakukan langkah-langkah berikut dalam portal Azure:

  1. Navigasikan ke hub IoT yang disediakan.

  2. Di menu sumber daya, pilih Perutean pesan dari pengaturan Hub.

  3. Pilih tab Titik akhir kustom di panel kerja, lalu pilih Tambahkan dan pilih Cosmos DB (pratinjau) dari daftar dropdown.

    Gambar berikut ini memperlihatkan opsi penambahan titik akhir di panel kerja portal Azure:

    Cuplikan layar yang memperlihatkan cara menambahkan titik akhir Cosmos DB.

  4. Ketik nama untuk titik akhir Cosmos DB Anda di Nama titik akhir.

  5. Di akun Cosmos DB, pilih akun Cosmos DB yang ada dari daftar akun Cosmos DB yang tersedia untuk pemilihan, lalu pilih database dan koleksi yang ada di Database dan Koleksi, masing-masing.

  6. Di Buat kunci partisi sintetis untuk pesan, pilih Aktifkan jika diperlukan.

    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 didefinisikan 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 catatan Cosmos DB baru, memastikan partisi logis dibuat setiap bulan untuk setiap perangkat.

  7. Dalam Jenis autentikasi, pilih jenis autentikasi untuk titik akhir Cosmos DB Anda. Anda dapat memilih salah satu jenis autentikasi yang didukung untuk mengakses database, berdasarkan penyiapan sistem Anda.

    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.

  8. Pilih Buat untuk menyelesaikan pembuatan titik akhir kustom Anda.

Untuk mempelajari selengkapnya tentang menggunakan portal Azure untuk membuat rute pesan dan titik akhir untuk hub IoT Anda, lihat Perutean pesan dengan IoT Hub — portal Azure.

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 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
  • Pesan broker MQTT

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 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 dalam status koneksi perangkat selama jendela 60 detik.

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 atau tidak cocok dengan kueri, atau jika pengujian tidak dapat dijalankan karena pesan sampel atau sintaks kueri salah. Untuk mempelajari selengkapnya, 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.IoT Hub events. Membuat atau menghapus rute apa pun setelah rute pertama tidak memengaruhi latensi end-to-end.

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 dipecah berdasarkan kategori fungsi, lihat bagian Metrik referensi data pemantauan Azure IoT Hub. 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