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

Usługa Event Grid umożliwia kierowanie komunikatów MQTT do usług platformy Azure lub elementów webhook w celu dalszego przetwarzania. W związku z tym można tworzyć kompleksowe rozwiązania, korzystając z danych IoT na potrzeby analizy danych, magazynu i wizualizacji, między innymi przypadków użycia.

Diagram of the MQTT message routing.

Jak mogę użyć funkcji routingu?

Routing komunikatów od klientów do usługi platformy Azure lub niestandardowego punktu końcowego umożliwia zmaksymalizowanie korzyści z tych danych. Poniżej przedstawiono niektóre z wielu przypadków użycia, które umożliwiają korzystanie z tej funkcji:

  • Analiza danych: wyodrębnianie i analizowanie kierowanych komunikatów od klientów w celu zoptymalizowania rozwiązania. Na przykład przeanalizuj dane telemetryczne maszyn, aby przewidzieć, kiedy zaplanować konserwację przed wystąpieniami awarii, aby uniknąć opóźnień i dalszych uszkodzeń.
  • Aplikacje bezserwerowe: wyzwalają funkcję bezserwerową na podstawie kierowanych komunikatów od klientów. Na przykład gdy czujnik ruchu wykryje ruch, wyślij powiadomienie do personelu zabezpieczającego, aby go rozwiązać.
  • Wizualizacje danych: twórz wizualizacje danych kierowanych od klientów, aby łatwo reprezentować i interpretować dane, a także wyróżniać trendy i wartości odstające.

Konfiguracja routingu:

Konfiguracja routingu umożliwia wysyłanie wszystkich komunikatów MQTT z klientów do tematu przestrzeni nazw usługi Event Grid lub tematu niestandardowego usługi Event Grid. Gdy komunikaty znajdują się w temacie, możesz skonfigurować subskrypcję zdarzeń, aby korzystać z komunikatów z tematu. Aby osiągnąć tę konfigurację, wykonaj następujące ogólne kroki:

  • Temat przestrzeni nazw jako miejsce docelowe routingu:
    • Utwórz temat przestrzeni nazw usługi Event Grid, w którym będą kierowane wszystkie komunikaty MQTT.
    • Utwórz subskrypcję zdarzeń typu wypychania, aby skierować te komunikaty do jednej z obsługiwanych usług platformy Azure lub niestandardowych elementów webhook lub subskrypcji zdarzeń typu kolejki w celu ściągnięcia komunikatów bezpośrednio z tematu przestrzeni nazw za pośrednictwem aplikacji.
    • Ustaw konfigurację routingu odwołującą się do tematu utworzonego w pierwszym kroku.

Diagram of the MQTT message routing to namespace topics.

  • Temat niestandardowy jako miejsce docelowe routingu:
    • Utwórz temat niestandardowy usługi Event Grid, w którym będą kierowane wszystkie komunikaty MQTT. Ten temat musi spełniać wymagania dotyczące tematu niestandardowego usługi Event Grid na potrzeby routingu
    • Utwórz subskrypcję zdarzeń usługi Event Grid w celu kierowania tych komunikatów do jednej z obsługiwanych usług platformy Azure lub niestandardowego punktu końcowego.
    • Ustaw konfigurację routingu odwołującą się do tematu utworzonego w pierwszym kroku.

Diagram of the MQTT message routing to custom topics.

Uwaga

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

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

W poniższej tabeli przedstawiono różnicę między tematami przestrzeni nazw a tematami niestandardowymi jako miejscem docelowym routingu. Aby uzyskać szczegółowy podział przydziałów i limitów uwzględnionych w każdym zasobie usługi Event Grid, zobacz Limity przydziału i limity.

Punkt porównania Temat przestrzeni nazw Temat niestandardowy
Produktywność Wysoki, do 40 MB/s (ruch przychodzący) i 80 MB/s (ruch wychodzący) Niski, do 5 MB/s (ruch przychodzący i wychodzący)
Dostarczanie ściągnięcia Tak
Wypychanie dostarczania do usługi Event Hubs Tak (w wersji zapoznawczej) Tak
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) Tak
Przechowywanie komunikatów 7 dni 1 dzień
Wymaganie przypisania roli Nie są potrzebne, ponieważ broker MQTT i temat przestrzeni nazw znajdują się w tej samej przestrzeni nazw Wymagane, ponieważ przestrzeń nazw hostująca funkcje brokera MQTT i temat niestandardowy są różnymi zasobami

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

Temat niestandardowy usługi Event Grid używany do routingu musi spełniać następujące wymagania:

  • Należy go ustawić, aby używać schematu zdarzeń w chmurze w wersji 1.0
  • Musi znajdować się w tym samym regionie co przestrzeń nazw.
  • Przed zastosowaniem konfiguracji routingu musisz przypisać rolę "Nadawca danych usługi EventGrid" do siebie lub do wybranej tożsamości zarządzanej w temacie niestandardowym usługi Event Grid.
    • W portalu przejdź do utworzonego zasobu tematu usługi Event Grid.
    • W elemencie menu "Kontrola dostępu (IAM)" wybierz pozycję Dodaj przypisanie roli.
    • Na karcie "Rola" wybierz pozycję "Nadawca danych usługi Event Grid", a następnie wybierz pozycję Dalej.
    • Na karcie "Członkowie" wybierz pozycję +Wybierz członków, a następnie wpisz nazwę użytkownika usługi AD w wyświetlonym polu "Wybierz" (na przykład user@contoso.com).
    • Wybierz nazwę użytkownika usługi AD, a następnie wybierz pozycję "Przejrzyj i przypisz"

Konfiguracja witryny Azure Portal

Aby skonfigurować routing, wykonaj następujące czynności:

  • Przejdź do przestrzeni nazw w witrynie Azure Portal.
  • W obszarze Routing zaznacz opcję Włącz routing.
  • W obszarze typ tematu wybierz temat Przestrzeni nazw lub Temat niestandardowy
  • W obszarze tematu wybierz temat, który został utworzony, w którym będą kierowane wszystkie komunikaty MQTT.
  • Jeśli wybrano temat niestandardowy, zostanie wyświetlona sekcja Tożsamość zarządzana dla dostarczania. Wybierz jedną z następujących opcji tożsamości, która będzie używana do uwierzytelniania brokera MQTT podczas dostarczania komunikatów MQTT do tematu niestandardowego:
    • Brak: w tym przypadku musisz przypisać rolę "Nadawca danych usługi EventGrid" do siebie w temacie niestandardowym.
    • Tożsamość przypisana przez system: w tym przypadku należy włączyć tożsamość przypisaną przez system w przestrzeni nazw jako wymaganie wstępne i przypisać rolę "EventGrid Data Sender" do tożsamości przypisanej przez system w temacie niestandardowym.
    • Tożsamość przypisana przez użytkownika: w tym przypadku musisz włączyć tożsamość przypisaną przez użytkownika w przestrzeni nazw jako wymaganie wstępne i przypisać rolę "EventGrid Data Sender" do wybranej tożsamości w temacie niestandardowym.
      • Jeśli wybrano tożsamość przypisaną przez użytkownika, zostanie wyświetlona lista rozwijana umożliwiająca wybranie żądanej tożsamości.
  • Wybierz Zastosuj.

Screenshot showing the routing configuration through the 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", //Allowed values: None, SystemAssigned, UserAssigned
                "userAssignedIdentity": "/subscriptions/<Subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<User-assigned identity>" //needed only if UserAssigned was the value of type
            },

	}
}

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

Zachowanie routingu 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 . Jeśli wystąpi awaria, usługa Event Grid ponawia próbę dostarczenia lub odrzuca komunikat, który miał zostać przekierowany. Usługa Event Grid nie gwarantuje zamówienia na dostarczenie zdarzeń, więc subskrybenci mogą otrzymywać je z zamówienia.

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

Błąd Opis błędu Zachowanie
TopicNotFoundError Temat niestandardowy skonfigurowany do odbierania wszystkich kierowanych komunikatów MQTT został usunięty. Usługa Event Grid odrzuca komunikat MQTT, który miał być kierowany.
AuthenticationError Rola Nadawca danych usługi EventGrid dla tematu niestandardowego skonfigurowanego jako miejsce docelowe dla komunikatów trasowanych MQTT została usunięta. Usługa Event Grid odrzuca komunikat MQTT, który miał być kierowany.
TooManyRequests Liczba komunikatów kierowanych przez MQTT na sekundę przekracza limit publikowania dla tematu niestandardowego. Usługa Event Grid ponawia próbę kierowania komunikatu MQTT.
ServiceError Nieoczekiwany błąd serwera dla przyczyny operacyjnej serwera. Usługa Event Grid ponawia próbę kierowania komunikatu MQTT.

Podczas ponawiania próby usługa Event Grid używa zasad ponawiania wycofywania wykładniczego na potrzeby routingu komunikatów MQTT. Usługa Event Grid ponawia próbę dostarczenia zgodnie z następującym harmonogramem zgodnie z najlepszymi potrzebami:

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

Jeśli przekierowany komunikat MQTT, który został w kolejce do ponownego dostarczenia zakończył się pomyślnie, usługa Event Grid podejmie próbę usunięcia komunikatu z kolejki ponawiania prób, ale nadal mogą zostać odebrane duplikaty.

Następne kroki:

Aby dowiedzieć się więcej na temat routingu, skorzystaj z następujących artykułów:

Szybki start:

Pojęcia: