Azure Event Grid ile MQTT iletilerinin HTTP Yayımlaması

Azure Event Grid MQTT Aracısı HTTP Yayımlama API'si, müşterilerin standart HTTP isteklerini kullanarak Message Queuing Telemetri Aktarımı (MQTT) iletilerini yayımlamasına olanak tanır. Bu özellik doğrudan MQTT istemci bağlantılarını tamamlar. Sunucudan cihaza komut ve denetim, güncelleştirmeler veya korunan ileti yönetimi için HTTP'yi tercih eden sunucu tarafı sistemler için basit ve ölçeklenebilir bir seçenek sağlar.

Önemli avantajlar:

  • Arka uç hizmetlerinin, kalıcı MQTT oturumlarını açık tutmadan MQTT iletileri göndermesine izin verir.
  • İstemci başına MQTT oturumlarını sınırlayarak aracı kararlılığını korumaya yardımcı olur.
  • MQTT ve HTTP kaynaklı iletiler için tutarlı işleme sağlar.

HTTP Yayımlama ne zaman kullanılır?

Aşağıdaki durumlarda HTTP Yayımlama'yı kullanmayı göz önünde bulundurun:

  • Arka uç hizmetleriniz HTTP yereldir ve MQTT üzerinden cihaz komutları veya güncelleştirmeleri göndermeniz gerekir.
  • MQTT bağlantısı açmadan tutulan iletileri yönetmek istiyorsunuz.
  • Oturum sınırlarını tüketmeden yayımlama kapasitesinin ölçeğini artırmanız gerekir.

Nasıl çalışır?

  1. HTTP istemcileri, MQTT Yayımlama ayrıntılarıyla bir HTTP POST isteği yayımlar.
  2. Event Grid, HTTP isteği bölümlerini standart MQTT PUBLISH paket özelliklerine eşler.
  3. İletiler Event Grid yönlendirme ve zenginleştirme işlem hattı üzerinden akıtılarak teslim garantileri sağlanır ve zenginleştirme veya dönüştürme uygulanır.

Örnek: MQTT Yayımlama eşdeğeri

PUBLISH Topic Name: devices/CXa-23112/prompt  
QoS: 1  
RETAIN: 0  
Response Topic: devices/CXa-23112/reply  
Correlation Data: >U±¶¶»/  
User Property: Urgency = alert  
User Property: RequestId = 55f4a7ee-b0b4-4d7f-8eb5-2edba2ced5d7  
Payload: Please accept terms of licensing and agreement

Örnek: HTTP Yayımlama isteği

POST /mqtt/messages?topic=devices%2FCXa-23112%2Fprompt&api-version=2025-02-15-preview HTTP/1.1  
Host: nsname.westus3-1.ts.eventgrid.azure.net  
Authorization: Bearer <ENTRA_TOKEN_HERE>  
mqtt-qos: 1  
mqtt-retain: 0  
mqtt-response-topic: devices%2FCXa-23112%2Freply  
mqtt-correlation-data: PlXCscK2wrbCuy8=  
mqtt-user-properties: W3siVXJnZW5jeSI6ImFsZXJ0In0seyJSZXF1ZXN0SWQiOiI1NWY0YTdlZS1iMGI0LTRkN2YtOGViNS0yZWRiYTJjZWQ1ZDcifV0=  
Content-Type: text/plain;charset=UTF-8  
Date: Sun, 06 Nov 1994 08:49:37 GMT  
Content-Length: 46  

Please accept terms of licensing and agreement

İstek parametreleri

Aşağıdaki tabloda HTTP isteği bölümlerinin MQTT PUBLISH paket özellikleriyle nasıl eşlediği açıklanmaktadır. Tüm ayrıntılar için özgün belgelere bakın.

MQTT Yayımlama bölümü Tür/Değerler Yer Gerekli Description
Konu adı Yüzde kodlanmış dize Sorgu topic Evet Yayımlanması gereken MQTT konusu
QoS 0 veya 1 Sorgu qos veya üst bilgi mqtt-qos Hayır [varsayılan = 1] Hizmet Kalitesi (QoS) düzeyi
RETAIN bayrak 0 veya 1 Sorgu retain veya üst bilgi mqtt-retain Hayır [varsayılan = 0] İletinin tutulup tutulmayacağı
Yanıt konusu Yüzde kodlanmış dize Üstbilgi mqtt-response-topic Hayı Gerekirse yanıt konusu
Bağıntı verileri Base64 dizesi Üstbilgi mqtt-correlation-data Hayı İzleme için ek veriler
Kullanıcı özellikleri Base64 JSON dizisi Üstbilgi mqtt-user-properties Hayı Özel kullanıcı özellikleri
İçerik türü Dize Üstbilgi content-type Hayı Yük türü
İleti süre sonu aralığı İşaretsiz tamsayı Üstbilgi mqtt-message-expiry Hayı Saniye cinsinden saklama süresi
Yük biçimi göstergesi 0 veya 1 Üstbilgi mqtt-payload-format-indicator Hayır [varsayılan = 0] Biçim göstergesi
Yük byte HTTP gövdesi Hayı İleti gövdesi

Notes:

  • Her ikisi de varsa, sorgu parametresi değerleri üst bilgi değerlerini geçersiz kılar.
  • Konu ve yanıt konusu için yüzde kodlaması gereklidir.
  • Bağıntı verileri Base64 ile kodlanmış olmalıdır.

HTTP Yayımlama'yı kullanmak için üst düzey adımlar

  1. Microsoft Entra ID taşıyıcı belirtecinizi kimlik doğrulaması için hazırlayın.
  2. Event Grid MQTT aracı uç noktanıza HTTP POST isteğinizi oluşturun.
  3. Konu gibi gerekli sorgu parametrelerini ekleyin.
  4. QoS, bayrak, RETAIN yanıt konusu ve kullanıcı özellikleri için isteğe bağlı üst bilgiler ekleyin.
  5. Yükünüzü HTTP gövdesi olarak ekleyin.
  6. İsteği gönderin.
  7. Event Grid portalında günlükler ve ölçümler aracılığıyla teslimi onaylayın.

Kimlik doğrulaması ve yetkilendirme

  • HTTP Publish kimlik doğrulaması için Microsoft Entra Id kullanır.
  • Yetkilendirme üst bilgisinde taşıyıcı belirteci gereklidir.
  • Microsoft Entra Nesne Kimliği, MQTT istemci kimliği olur.
  • AuthN/AuthZ modeli standart MQTT bağlantılarıyla uyumludur.

Yönlendirme ve gözlemlenebilirlik

Ölçümler ve günlükler şunlardır:

  • Protokol: http-publish
  • Talep Kimliği
  • Konu
  • Kaynak IP
  • Yetkilendirme sorumlusu

En iyi yöntemler

  • Mümkün olduğunda küçük harfli üst bilgi anahtarlarını kullanın. HTTP/2 üst bilgi anahtarları büyük/küçük harfe duyarlı değildir.
  • HTTP iletileri doğrudan MQTT iletilerinden daha büyük olma eğiliminde olduğundan aktarım hızını izleyin.
  • HTTP Yayımlama'nın doğrudan MQTT tarafından yayımlanan iletilerle aktarım hızı sınırlarını paylaştığını gözlemleyin.

Hız kısıtlama

HTTP Yayımlama, genel MQTT aktarım hızı kotanıza göre sayılır. Sınırları aşmamak için kullanımınızı izleyin.