Bagikan melalui


Menerbitkan pesan MQTT melalui HTTP dengan Azure Event Grid (pratinjau)

Azure Event Grid sekarang mendukung penerbitan pesan Message Queuing Telemetry Transport (MQTT) melalui HTTP. Event Grid memungkinkan sistem back-end mengirim pesan ke perangkat tanpa mempertahankan koneksi MQTT persisten. Pendekatan ini menyederhanakan integrasi untuk aplikasi yang lebih menyukai komunikasi stateless. Ini menggunakan autentikasi aman dengan MICROSOFT Entra ID dan menyediakan pengiriman yang dapat diskalakan dan andal kepada klien MQTT. Dalam artikel ini, Anda mempelajari cara menggunakan HTTP Publish API. Anda juga mempelajari cara mendapatkan kredensial yang diperlukan dan memverifikasi pengiriman pesan dengan menggunakan alat populer seperti Bruno dan MQTTX.

Nota

Fitur ini masih dalam mode pratinjau.

Artikel ini menjelaskan cara menerbitkan pesan MQTT melalui HTTP dengan Event Grid.

Dapatkan detail koneksi Anda

  • Nama domain yang sepenuhnya memenuhi syarat namespace (FQDN): Contohnya adalah contoso.westus3-1.ts.eventgrid.azure.net.
  • Topik: Contohnya adalah devices/CXa-23112/prompt.
  • Kredensial: Kredensial klien MICROSOFT Entra ID.

Penetapan Peran

Identitas yang digunakan untuk membuat permintaan PENERBITAN HTTP harus memiliki peran EventGrid TopicSpaces Publisher Azure RBAC untuk akses penerbit pesan MQTT.

Mendapatkan token pembawa

Jalankan perintah Azure CLI berikut untuk mendapatkan token pembawa:

az account get-access-token --resource=https://eventgrid.azure.net --query accessToken -o tsv

Simpan token ini untuk digunakan di Authorization: Bearer <TOKEN> header.

Menerbitkan pesan dengan menggunakan HTTP

Berikut adalah contoh perintah curl untuk mensimulasikan PENERBITAN HTTP:

curl -X POST "https://contoso.westus3-1.ts.eventgrid.azure.net/mqtt/messages?topic=devices%2XXXX-0000%2Fprompt&api-version=2025-08-01-preview" \ 
  -H "Authorization: Bearer <ENTRA_TOKEN_HERE>" \ 
  -H "mqtt-qos: 1" \ 
  -H "mqtt-retain: 0" \ 
  -H "mqtt-response-topic: devices%2XXXX-00000%2Freply" \ 
  -H "mqtt-correlation-data: XXXXXXX" \ 
  -H "mqtt-user-properties: XXXXXXXXXXXX" \ 
  -H "Content-Type: text/plain;charset=UTF-8" \ 
  --data-raw "Please accept terms of licensing and agreement" 

Dalam perintah sampel ini:

  • Topik dikodekan persen.
  • Header opsional ditambahkan untuk Kualitas Layanan (QoS), RETAIN bendera, topik respons, dan properti pengguna.
  • Payload masuk ke isi permintaan.

Verifikasi di MQTTX

Gunakan MQTTX atau pustaka MQTT apa pun (seperti paho-mqtt Python) untuk berlangganan topik yang sama untuk mengonfirmasi pengiriman.

  1. Buat koneksi baru di MQTTX:

    • Host: contoso.westus3-1.ts.eventgrid.azure.net
    • Port: 8883 (TLS)
    • Client ID: same as your Entra Object ID
    • Username/Password: N/A — use certificate or token auth if configured
  2. Berlangganan topik yang Anda gunakan dalam perintah HTTP POST .

  3. Jalankan HTTP Publish dan tonton pesan di MQTTX. Payload Anda akan muncul.

Jika penerbitan berhasil, Anda akan melihat:

  • Respons HTTP: "204 Tanpa Konten" atau "202 Diterima" (tergantung pada aturan perutean).
  • Pesan muncul: Klien MQTT melihat pesan secara instan.

Pemecahan Masalah

  • 401 Tidak Sah: Jika token hilang atau kedaluwarsa, Anda akan melihat "401 Tidak Sah." Refresh token Anda.
  • 403 Terlarang: Jika topik tidak valid atau Anda tidak memiliki hak, Anda akan melihat "403 Terlarang." Periksa topik atau izin Anda.
  • Kesalahan Server Internal 500: Jika perutean gagal secara internal, periksa metrik dan log diagnostik untuk namespace Layanan Event Grid Anda.
  • Pesan tidak muncul: Jika pesan tidak muncul, pastikan bahwa topik dikodekan persen dalam URL. Periksa konfigurasi perutean broker, dan verifikasi bahwa Anda menggunakan namespace yang sama.