Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Interfejs API HTTP Publish brokera MQTT w usłudze Azure Event Grid umożliwia klientom publikowanie komunikatów MQTT (Message Queuing Telemetry Transport) za pomocą 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ć zachowanymi komunikatami bez otwierania połączenia MQTT.
- Należy zwiększyć wydajność publikowania bez wyczerpywania limitów sesji.
Jak to działa
- Klienci HTTP wystawiają żądanie HTTP
POSTze szczegółami publikowania MQTT. - Usługa Event Grid mapuje części żądania HTTP na standardowe właściwości pakietu MQTT PUBLISH.
- Komunikaty przepływają przez potok routingu i wzbogacania usługi Event Grid, który zapewnia gwarancje dostarczenia oraz stosuje wszelkie wzbogacenia lub przekształcenia.
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, w jaki sposób części żądania HTTP są mapowane na właściwości pakietu MQTT PUBLISH. 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 publikowania |
| 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 w formacie 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-interval |
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 procentowe jest wymagane dla tematu i tematu odpowiedzi.
- Dane korelacji muszą być zakodowane w formacie Base64.
Główne kroki korzystania z publikowania HTTP
- Przygotuj token okaziciela Microsoft Entra ID do uwierzytelniania.
- Skonstruuj żądanie HTTP
POSTdo punktu końcowego brokera MQTT usługi Event Grid. - Uwzględnij wymagane parametry zapytania, takie jak temat.
- Dodaj opcjonalne nagłówki dla QoS, flagi
RETAIN, tematu odpowiedzi i właściwości użytkownika. - Dodaj swoje dane jako treść żądania HTTP.
- Wyślij żądanie.
- Potwierdź dostarczenie na podstawie dzienników i metryk w portalu Event Grid.
Uwierzytelnianie i autoryzacja
- Publikacja HTTP używa Microsoft Entra ID 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.
Trasowanie i obserwowalność
Metryki i dzienniki obejmują:
- Protokół:
http-publish - Identyfikator żądania
- Temat
- Źródłowy adres IP
- Podmiot autoryzacji
Najlepsze rozwiązania
- W miarę możliwości używaj kluczy nagłówków zapisanych małymi literami. 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 HTTP Publish współdzieli limity przepustowości z wiadomościami MQTT publikowanymi bezpośrednio.
Ograniczanie prędkości
Operacja HTTP Publish jest wliczana do ogólnego limitu przepustowości MQTT. Monitoruj użycie, aby uniknąć przekroczenia limitów.