Udostępnij przez


Publikowanie komunikatów MQTT protokołu HTTP za pomocą usługi Azure Event Grid

Interfejs API publikowania HTTP brokera MQTT usługi Azure Event Grid umożliwia klientom publikowanie komunikatów usługi Telemetrii Transportu telemetrii (MQTT, Message Queuing Telemetry Transport) przy użyciu standardowych żądań HTTP. Ta funkcja uzupełnia bezpośrednie połączenia klienta MQTT. Zapewnia prostą i skalowalną opcję dla systemów po stronie serwera, które preferują protokół HTTP dla poleceń i kontroli serwer-urządzenie, aktualizacji lub zachowywanego zarządzania komunikatami.

Najważniejsze korzyści:

  • Umożliwia usługom zaplecza wysyłanie komunikatów MQTT bez konieczności otwierania trwałych sesji MQTT.
  • Pomaga chronić stabilność brokera przez ograniczenie sesji MQTT na klienta.
  • Zapewnia spójne przetwarzanie komunikatów pochodzących z MQTT i HTTP.

Kiedy należy używać funkcji publikowania HTTP

Rozważ użycie funkcji publikowania HTTP, gdy:

  • Usługi zaplecza są natywne dla protokołu HTTP i muszą wysyłać polecenia lub aktualizacje urządzenia za pośrednictwem protokołu MQTT.
  • Chcesz zarządzać zachowanych komunikatów bez otwierania połączenia MQTT.
  • Należy skalować pojemność publikowania w górę bez wyczerpania limitów sesji.

Jak to działa

  1. Klienci HTTP wystawiają żądanie HTTP POST ze szczegółami publikowania MQTT.
  2. Usługa Event Grid mapuje części żądań HTTP na standardowe właściwości pakietów PUBLISH MQTT.
  3. Komunikaty przepływają przez potok routingu i wzbogacania usługi Event Grid, który gwarantuje dostarczanie i stosuje wszelkie wzbogacanie lub przekształcanie.

Przykład: odpowiednik publikowania MQTT

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

Przykład: żądanie publikowania HTTP

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

Parametry żądania

W poniższej tabeli opisano sposób mapowania części żądań HTTP na właściwości pakietów PUBLISH MQTT. Aby uzyskać szczegółowe informacje, zapoznaj się z oryginalną dokumentacją.

Część publikowania MQTT Typ/wartości Lokalizacja Wymagane Description
Nazwa tematu Ciąg zakodowany procentowo Zapytanie topic Tak Temat MQTT do opublikowania w
QoS 0 lub 1 Zapytanie qos lub nagłówek mqtt-qos Nie [default = 1] Poziom jakości usług (QoS)
RETAIN flaga 0 lub 1 Zapytanie retain lub nagłówek mqtt-retain Nie [default = 0] Czy zachować komunikat
Temat odpowiedzi Ciąg zakodowany procentowo Nagłówek mqtt-response-topic Nie. Temat odpowiedzi w razie potrzeby
Dane korelacji Ciąg base64 Nagłówek mqtt-correlation-data Nie. Dodatkowe dane do śledzenia
Właściwości użytkownika Tablica JSON base64 Nagłówek mqtt-user-properties Nie. Niestandardowe właściwości użytkownika
Typ zawartości Sznurek Nagłówek content-type Nie. Typ ładunku
Interwał wygaśnięcia komunikatu Liczba całkowita bez znaku Nagłówek mqtt-message-expiry Nie. Okres przechowywania w sekundach
Wskaźnik formatu ładunku 0 lub 1 Nagłówek mqtt-payload-format-indicator Nie [default = 0] Wskaźnik formatu
Ładunek Bajty Treść protokołu HTTP Nie. Treść wiadomości

Notes:

  • Wartości parametrów zapytania zastępują wartości nagłówków, jeśli oba te wartości są obecne.
  • Kodowanie procentu jest wymagane dla tematu i tematu odpowiedzi.
  • Dane korelacji muszą być zakodowane w formacie Base64.

Ogólne kroki dotyczące korzystania z publikowania HTTP

  1. Przygotuj token elementu nośnego identyfikatora entra firmy Microsoft na potrzeby uwierzytelniania.
  2. Skonstruuj żądanie HTTP POST do punktu końcowego brokera MQTT usługi Event Grid.
  3. Uwzględnij wymagane parametry zapytania, takie jak temat.
  4. Dodaj opcjonalne nagłówki dla funkcji QoS, flagi, tematu RETAIN odpowiedzi i właściwości użytkownika.
  5. Dodaj ładunek jako treść PROTOKOŁU HTTP.
  6. Wyślij żądanie.
  7. Potwierdź dostarczanie za pośrednictwem dzienników i metryk w portalu usługi Event Grid.

Uwierzytelnianie i autoryzacja

  • Publikowanie HTTP używa identyfikatora Entra firmy Microsoft do uwierzytelniania.
  • Token elementu nośnego jest wymagany w nagłówku autoryzacji.
  • Identyfikator obiektu Entra firmy Microsoft staje się identyfikatorem klienta MQTT.
  • Model AuthN/AuthZ jest zgodny ze standardowymi połączeniami MQTT.

Routing i możliwość obserwowania

Metryki i dzienniki obejmują:

  • Protokół: http-publish
  • Identyfikator żądania
  • Temat
  • Źródłowy adres IP
  • Podmiot zabezpieczeń autoryzacji

Najlepsze rozwiązania

  • W miarę możliwości używaj małych nagłówka. Klucze nagłówków HTTP/2 są niewrażliwe na wielkość liter.
  • Monitoruj przepływność, ponieważ komunikaty HTTP są zwykle większe niż bezpośrednie komunikaty MQTT.
  • Zwróć uwagę, że publikowanie HTTP udostępnia limity przepływności z bezpośrednimi opublikowanymi komunikatami MQTT.

Ograniczanie prędkości

Liczba publikacji HTTP w stosunku do ogólnego limitu przydziału przepływności MQTT. Monitoruj użycie, aby uniknąć przekroczenia limitów.