Kierowanie komunikatów MQTT w usłudze Azure Event Grid

Event Grid pozwala przesyłać wiadomości MQTT do usług Azure lub webhooków w celu dalszego przetwarzania. Przekierowując te dane, możesz tworzyć kompleksowe rozwiązania, które wykorzystują dane IoT do analizy, przechowywania i wizualizacji.

Ten artykuł wyjaśnia, kiedy należy używać routingu i pokazuje, jak skonfigurować routowanie zarówno do tematu przestrzeni nazw Event Grid, jak i do tematu niestandardowego.

Diagram pokazujący kierowanie wiadomości MQTT z urządzeń przez Azure Event Grid do obsługiwaczy takich jak usługi Azure, webhooki i aplikacje.

Kiedy używać routingu

Kierowanie wiadomości od klientów do usługi Azure lub niestandardowego endpointu pozwala maksymalnie wykorzystać korzyści z tych danych. Poniższa lista opisuje niektóre z wielu zastosowań tej funkcji:

  • Analiza danych: Wyodrębnij i przeanalizuj przesyłane wiadomości od klientów, aby zoptymalizować swoje rozwiązanie. Na przykład przeanalizuj telemetrię swoich urządzeń, aby przewidzieć, kiedy zaplanować konserwację przed awarią, aby uniknąć opóźnień i dalszych uszkodzeń.
  • Aplikacje bezserwerowe: Uruchamiaj funkcję bezserwerową na podstawie wiadomości kierowanych od klientów. Na przykład gdy czujnik ruchu wykryje ruch, wyślij powiadomienie do ochrony, aby zajęła się sytuacją.
  • Wizualizacje danych: Twórz wizualizacje danych przekazywanych klientom do reprezentacji i zrozumienia, a także podkreślania trendów i wartości odstających.

Konfigurowanie routingu

Konfiguracja routingu pozwala wysyłać wszystkie wiadomości MQTT od klientów do tematu przestrzeni nazw Event Grid lub do tematu niestandardowego Event Grid. Gdy komunikaty znajdują się w temacie, można skonfigurować subskrypcję zdarzeń, aby pobierać komunikaty z tematu. Aby osiągnąć tę konfigurację, wykonaj następujące ogólne kroki:

  • Temat przestrzeni nazw jako miejsce docelowe routingu:
    • Stwórz temat przestrzeni nazw Event Grid , gdzie Event Grid kieruje wszystkie wiadomości MQTT.
    • Stwórz subskrypcję zdarzeń typu push, aby przekierować te wiadomości do jednej z obsługiwanych usług Azure lub niestandardowego webhooka, albo utworzyć subskrypcję zdarzeń typu kolejka, aby pobierać wiadomości bezpośrednio z tematu przestrzeni nazw przez aplikację.
    • Ustaw konfigurację routingu odnoszącą się do tematu, który stworzyłeś w pierwszym kroku.

Diagram routingu komunikatów MQTT do tematów przestrzeni nazw.

Diagram routingu komunikatów MQTT do tematów niestandardowych.

Uwaga / Notatka

Wyłączenie dostępu do sieci publicznej w przestrzeni nazw powoduje awarię routingu MQTT.

Różnica między tematami przestrzeni nazw a tematami niestandardowymi jako celami routingu

W poniższej tabeli przedstawiono różnicę między tematami przestrzeni nazw a tematami niestandardowymi jako miejscem docelowym routingu. Szczegółowy podział tego, które kwoty i limity obejmuje każdy zasób Siatki Zdarzeń, zobacz Kwoty i limity.

Punkt porównania Temat przestrzeni nazw Temat niestandardowy
Przepustowość Wysoki, do 40 MB/s (ruch przychodzący) i 80 MB/s (ruch wychodzący) Niskie, do 5 MB/s (przepływ danych przychodzących i wychodzących)
Dostarczanie na żądanie Yes No
Dostarczanie push do usługi Event Hubs Yes Yes
Dostarczanie wypychane do usług platformy Azure (funkcje, elementy webhook, kolejki i tematy usługi Service Bus, połączenia hybrydowe przekaźnika i kolejki magazynu) No Yes
Przechowywanie komunikatów 7 dni 1 dzień
Wymaganie przypisania roli Nie jest to konieczne, ponieważ broker MQTT i temat przestrzeni nazw znajdują się w tej samej przestrzeni nazw Wymagane, ponieważ przestrzeń nazw hostująca funkcjonalność brokera MQTT i niestandardowy temat to różne zasoby

Wymagania dotyczące tematu niestandardowego usługi Event Grid na potrzeby routingu

Niestandardowy temat Event Grid, którego używasz do routingu, musi spełniać następujące wymagania:

  • Musi korzystać ze schematu CloudEvents v1.0.
  • Musi znajdować się w tym samym regionie co namespace.
  • Musisz przypisać rolę Nadawcy danych Event Grid do siebie lub do wybranej tożsamości zarządzanej w temacie niestandardowym Event Grid, zanim zastosujesz konfigurację routingu. Aby przypisać rolę:
    1. W portalu przejdź do zasobu tematu Event Grid, który stworzyłeś.
    2. W menu kontroli dostępu (IAM) wybierz Dodaj przypisanie roli.
    3. Na zakładce Rola wybierz Nadawcę danych siatki zdarzeń, a następnie wybierz Następny.
    4. Na zakładce Członkowie wybierz Wybierz członków, a następnie wpisz swoją nazwę użytkownika Microsoft Entra w polu Select, user@contoso.comktóre pojawia się (na przykład ).
    5. Wybierz nazwę użytkownika Microsoft Entra, a następnie wybierz Przeglądaj + przypisz.

Konfiguracja witryny Azure Portal

Aby skonfigurować trasowanie:

  1. Przejdź do przestrzeni nazw w witrynie Azure Portal.
  2. W sekcji Routing wybierz Włącz routing.
  3. Dla typu Tematu wybierz Temat przestrzeni nazw lub Temat niestandardowy.
  4. W polu Topic wybierz utworzony temat, do którego są kierowane wszystkie komunikaty MQTT.
  5. Jeśli wybierzesz niestandardowy temat, pojawi się sekcja Tożsamość zarządzana na potrzeby dostarczania. Wybierz jedną z poniższych opcji tożsamości używanej do uwierzytelniania brokera MQTT podczas dostarczania wiadomości MQTT do niestandardowego tematu:
    • Brak: Przypisz sobie rolę Nadawcy danych z siatki zdarzeń w temacie niestandardowym.
    • Tożsamość przypisana przez system: Włącz tożsamość przypisaną przez system dla przestrzeni nazw jako wymaganie wstępne i przypisz rolę Event Grid Data Sender do tożsamości przypisanej przez system dla tematu niestandardowego.
    • Tożsamość przypisana przez użytkownika: Włącz tożsamość przypisaną przez użytkownika w przestrzeni nazw jako warunek wstępny i przypisz rolę Nadawcy danych Event Grid do wybranej tożsamości w niestandardowym temacie. Jeśli wybierzesz Tożsamość przypisaną przez użytkownika, pojawia się rozwijane menu, aby wybrać tę tożsamość.
  6. Wybierz opcję Zastosuj.

Zrzut ekranu pokazujący konfigurację routingu przez portal.

Aby uzyskać instrukcje konfiguracji wzbogacania, przejdź do konfiguracji portalu wzbogacania.

Konfiguracja interfejsu wiersza polecenia platformy Azure

az resource create --resource-type Microsoft.EventGrid/namespaces --id /subscriptions/<Subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.EventGrid/namespaces/<Namespace Name> --is-full-object --api-version 2023-06-01-preview --properties @./resources/NS.json

NS.json

{
    "properties": {
        "inputSchema": "CloudEventSchemaV1_0",
        "topicSpacesConfiguration": {
            "state": "Enabled",
            "routeTopicResourceId": "/subscriptions/<Subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.EventGrid/topics/<Event Grid topic name>",
            "routingIdentityInfo": {
                "type": "UserAssigned",
                "userAssignedIdentity": "/subscriptions/<Subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<User-assigned identity>"
            }
        }
    }
}

W routingIdentityInfo element None akceptuje SystemAssigned, UserAssigned lub type. Ustaw userAssignedIdentity tylko wtedy, gdy type ma wartość UserAssigned.

Aby uzyskać instrukcje konfiguracji wzbogacania, przejdź do konfiguracji interfejsu wiersza polecenia wzbogacania.

Zachowanie trasowania komunikatów MQTT

Podczas routingu komunikatów MQTT do tematów niestandardowych, usługa Event Grid zapewnia trwałe dostarczanie, ponieważ próbuje dostarczyć każdy komunikat co najmniej raz natychmiast. Jeśli dojdzie do awarii, usługa Event Grid albo ponawia próbę dostarczenia, albo odrzuca komunikat przeznaczony do trasowania. Usługa Event Grid nie gwarantuje kolejności dostarczania zdarzeń, więc subskrybenci mogą je otrzymywać w przypadkowej kolejności.

W poniższej tabeli opisano zachowanie routingu komunikatów MQTT na podstawie różnych błędów.

Błąd Opis błędu Zachowanie
BłądNieznalezieniaTematu Niestandardowy temat skonfigurowany do odbierania wszystkich wiadomości kierowanych przez MQTT został usunięty. Event Grid odrzuca komunikat MQTT przeznaczony do trasowania.
AuthenticationError Rola Nadawcy danych w Event Grid dla niestandardowego tematu, który został skonfigurowany jako cel dla komunikatów przesyłanych za pomocą MQTT, została usunięta. Event Grid odrzuca komunikat MQTT przeznaczony do trasowania.
Za dużo żądań Liczba komunikatów kierowanych przez MQTT na sekundę przekracza limit publikowania dla tematu niestandardowego. Usługa Event Grid ponawia próbę kierowania komunikatu MQTT.
Błąd usługi Nieoczekiwany błąd serwera z powodów operacyjnych serwera. Usługa Event Grid ponawia próbę kierowania komunikatu MQTT.

Usługa Event Grid używa polityki wycofywania wykładniczego przy ponownym próbowaniu dla routingu komunikatów MQTT podczas ponownych prób. Usługa Event Grid ponawia próbę dostarczenia zgodnie z następującym harmonogramem w miarę możliwości.

  • 10 sekund
  • 30 sekund
  • 1 minuta
  • 5 minut
  • 10 minut
  • 30 minut
  • 1 godzina
  • 3 godziny
  • 6 godz.
  • Co 12 godzin

Jeśli przekazana wiadomość MQTT w kolejce do ponownego dostarczenia zakończy się sukcesem, Event Grid próbuje usunąć tę wiadomość z kolejki powtórek na zasadzie najlepszych starań, ale nadal możesz otrzymać duplikaty.