Bagikan melalui


Gunakan perutean pesan IoT Hub untuk mengirim pesan dari perangkat ke cloud menuju layanan Azure

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

  • Kirim 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.

  • Filter data before routing it by applying rich queries. Perutean pesan memungkinkan Anda untuk menanyakan properti pesan dan isi pesan serta tag kembar perangkat dan properti kembar perangkat. For more information, see queries in message routing.

IoT Hub mendefinisikan format umum untuk semua olahpesan perangkat ke cloud untuk interoperabilitas lintas protokol. Untuk informasi selengkapnya, lihat Membuat dan membaca pesan IoT Hub.

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 dan ukuran IoT Hub yang tepat untuk solusi Anda.

Titik akhir pengaturan rute

Setiap hub IoT memiliki titik akhir perutean default yang disebut messages/events yang kompatibel dengan Event Hubs. Anda juga dapat membuat titik akhir kustom yang menunjuk ke layanan lain di langganan Azure Anda.

IoT Hub saat ini mendukung titik akhir berikut untuk perutean pesan:

  • Built-in endpoint
  • Storage containers
  • Service Bus queues
  • Service Bus topics
  • Event Hubs
  • Cosmos DB

Untuk informasi selengkapnya tentang masing-masing titik akhir ini, lihat Titik akhir IoT Hub.

Each message is routed to all endpoints whose routing queries it matches, which means that a message can be routed to multiple endpoints. Namun, jika pesan cocok dengan beberapa rute yang menunjuk ke titik akhir yang sama, IoT Hub mengirimkan pesan ke titik akhir tersebut hanya sekali.

IoT Hub memerlukan akses tulis ke titik akhir layanan ini agar pengalihan pesan berfungsi. Jika Anda mengonfigurasi endpoint melalui portal Azure, izin yang diperlukan akan secara otomatis 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 Mengelola rute dan titik akhir menggunakan portal Microsoft Azure.

Pastikan Anda mengonfigurasi layanan untuk mendukung throughput yang diharapkan. For example, if you're using Event Hubs as a custom endpoint, you must configure the throughput units for that event hub so that it can handle the ingress of events you plan to send via IoT Hub message routing. Similarly, when using a Service Bus queue as an endpoint, you must configure the maximum size to ensure the queue can hold all the data ingressed, until it's egressed by consumers. Saat pertama kali mengonfigurasi solusi IoT, Anda mungkin perlu memantau titik akhir Anda yang lain dan melakukan penyesuaian untuk beban aktual.

If your custom endpoint has firewall configurations, consider using the Microsoft trusted first party exception.

Route to an endpoint in another subscription

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 lebih lanjut, lihat Konektivitas Egress dari IoT Hub ke sumber daya Azure lainnya.

Routing queries

IoT Hub message routing provides a querying capability to filter the data before routing it to the endpoints. Each routing query has the following properties:

Property Deskripsi
Nama The unique name that identifies the query.
Sumber Asal aliran data yang akan ditindaklanjuti. Misalnya, telemetri perangkat.
Kondisi The query expression for the routing query that is run against the message application properties, system properties, message body, device twin tags, and device twin properties to determine if it's a match for the endpoint.
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.

A single message can match the condition on multiple routing queries, in which case IoT Hub delivers the message to the endpoint associated with each matched query. IoT Hub juga secara otomatis menghilangkan duplikasi dalam pengiriman pesan. Jika pesan cocok dengan beberapa kueri yang memiliki tujuan yang sama, IoT Hub hanya mengirimkannya sekali ke tujuan tersebut.

For more information, see IoT Hub message routing query syntax.

Read routed data

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

Rute cadangan

Rute fallback mengirim semua pesan yang tidak memenuhi kondisi kueri di salah satu rute yang ada ke titik akhir bawaan (pesan/kegiatan), yang kompatibel dengan Event Hubs. If message routing is enabled, you can enable the fallback route capability. 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 dari rute mana pun yang dikirim ke titik akhir bawaan. Bahkan 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 Microsoft Azure di halaman Perutean pesan. Anda juga dapat menggunakan Azure Resource Manager untuk FallbackRouteProperties untuk menggunakan titik akhir kustom untuk rute fallback.

Kejadian non-telemetri

In addition to device telemetry, message routing also enables sending nontelemetry events, including:

  • Device twin change events
  • Kejadian siklus hidup perangkat
  • Peristiwa siklus hidup pekerjaan perangkat
  • Digital twin change events
  • Kejadian status koneksi perangkat

Misalnya, jika rute dibuat dengan sumber data yang diatur ke Device Twin Change Events, IoT Hub mengirim pesan ke titik akhir yang berisi perubahan pada device twin. Similarly, if a route is created with the data source set to Device Lifecycle Events, IoT Hub sends a message indicating whether the device or module was deleted or created. Untuk informasi selengkapnya tentang peristiwa siklus hidup perangkat, lihat Pemberitahuan siklus hidup perangkat dan modul.

When using Azure IoT Plug and Play, a developer can create routes with the data source set to Digital Twin Change Events and IoT Hub sends messages whenever a digital twin property is set or changed, a digital twin is replaced, or when a change event happens for the underlying device twin. Terakhir, jika rute dibuat dengan diatur sumber data ke Peristiwa Status Koneksi Perangkat, IoT Hub mengirimkan pesan yang menunjukkan apakah perangkat tersebut 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. Untuk mempelajari layanan mana yang paling sesuai untuk skenario Anda, lihat perbedaan antara perutean pesan dan Event Grid.

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 memicu pemberitahuan status koneksi perangkat. For IoT Hub to start sending device connection state events, after opening a connection a device must call either the cloud-to-device receive message operation or the device-to-cloud send telemetry operation. 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. Untuk informasi lebih lanjut, baca artikel berikut:

IoT Hub tidak melaporkan setiap peristiwa koneksi dan pemutusan perangkat individual, 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.

Test routes

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 contoh pesan atau sintaks kueri salah. Untuk mempelajari lebih lanjut, lihat Menguji Rute dan Menguji Semua Rute.

Latency

When you route device-to-cloud telemetry messages, there's a slight increase in the end-to-end latency after the creation of the first route.

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. You can monitor the latency using the Routing: message latency for messages/events or d2c.endpoints.latency.builtIn.events IoT Hub metrics. Membuat atau menghapus rute apa pun setelah rute pertama tidak memengaruhi latensi end-to-end.

Monitor and troubleshoot

IoT Hub menyediakan beberapa metrik yang terkait dengan perutean dan titik akhir untuk memberi Anda ringkasan tentang kesehatan hub dan pesan yang dikirim. You also can track errors that occur during evaluation of a routing query and endpoint health as perceived by IoT Hub with the routes category in IoT Hub resource logs. 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.

Use the troubleshooting guide for routing for more details and support for troubleshooting routing.