Udostępnij za pośrednictwem


Samouczek: kierowanie komunikatów MQTT do usługi Azure Event Hubs (interfejs wiersza polecenia platformy Azure) przy użyciu tematów przestrzeni nazw

Z tego samouczka dowiesz się, jak używać tematu przestrzeni nazw do kierowania danych z klientów MQTT do usługi Azure Event Hubs. Poniżej przedstawiono ogólne kroki:

Wymagania wstępne

  • Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.
  • Jeśli dopiero zaczynasz korzystać z usługi Event Grid, zapoznaj się z omówieniem usługi Event Grid przed rozpoczęciem tego samouczka.
  • Zarejestruj dostawcę zasobów usługi Event Grid zgodnie z krokami w temacie Rejestrowanie dostawcy zasobów usługi Event Grid.
  • Upewnij się, że port 8883 jest otwarty w zaporze. Przykład w tym samouczku używa protokołu MQTT, który komunikuje się za pośrednictwem portu 8883. Ten port może zostać zablokowany w niektórych środowiskach sieci firmowych i edukacyjnych.

Uruchom usługę Cloud Shell

  1. Zaloguj się do Azure Portal.

  2. Wybierz link, aby uruchomić usługę Cloud Shell.

  3. Przejdź do powłoki Bash.

    Zrzut ekranu przedstawiający witrynę Azure Portal z wybraną pozycją Cloud Shell otwórz i powłoką Bash.

Tworzenie przestrzeni nazw i tematu usługi Event Grid

Aby utworzyć przestrzeń nazw usługi Event Grid i temat w przestrzeni nazw, skopiuj następujący skrypt do edytora, zastąp symbole zastępcze rzeczywistymi wartościami i uruchom polecenia.

Symbol zastępczy Komentarze
RESOURCEGROUPNAME Określ nazwę grupy zasobów do utworzenia.
EVENTGRIDNAMESPACENAME Określ nazwę przestrzeni nazw usługi Event Grid.
REGION Określ lokalizację, w której chcesz utworzyć zasoby.
NAMESPACETOPICNAME Określ nazwę tematu przestrzeni nazw.
rgName="RESOURCEGROUPNAME"
nsName="EVENTGRIDNAMESPACENAME"
location="REGION"
nsTopicName="NAMESPACETOPICNAME"

az group create -n $rgName -l $location
az eventgrid namespace create -g $rgName -n $nsName -l $location --topic-spaces-configuration "{state:Enabled}" --identity "{type:SystemAssigned}"
az eventgrid namespace topic create -g $rgName --name $nsTopicName --namespace-name $nsName

Tworzenie przestrzeni nazw usługi Event Hubs i centrum zdarzeń

Aby utworzyć przestrzeń nazw usługi Event Hubs i centrum zdarzeń w przestrzeni nazw, zastąp symbole zastępcze rzeczywistymi wartościami i uruchom następujące polecenia. To centrum zdarzeń jest używane jako procedura obsługi zdarzeń w subskrypcji zdarzeń utworzonej w tym samouczku.

Symbol zastępczy Komentarze
EVENTHUBSNAMESPACENAME Określ nazwę przestrzeni nazw usługi Event Hubs do utworzenia.
EVENTHUBNAME Określ nazwę wystąpienia usługi Event Hubs (centrum zdarzeń), które ma zostać utworzone w przestrzeni nazw usługi Event Hubs.
ehubNsName="EVENTHUBSNAMESPACENAME`"
ehubName="EVENTHUBNAME"

az eventhubs namespace create --resource-group $rgName --name $ehubNsName
az eventhubs eventhub create --resource-group $rgName --namespace-name $ehubNsName --name $ehubName

Nadawanie przestrzeni nazw usługi Event Grid dostępu do wysyłania zdarzeń do centrum zdarzeń

Uruchom następujące polecenie, aby dodać jednostkę usługi przestrzeni nazw usługi Event Grid do roli nadawcy danych usługi Azure Event Hubs w przestrzeni nazw usługi Event Hubs. Umożliwia ona przestrzeni nazw i zasobom usługi Event Grid wysyłanie zdarzeń do centrum zdarzeń w przestrzeni nazw usługi Event Hubs.

egNamespaceServicePrincipalObjectID=$(az ad sp list --display-name $nsName --query [].id -o tsv)
namespaceresourceid=$(az eventhubs namespace show -n $ehubNsName -g $rgName --query "{I:id}" -o tsv) 

az role assignment create --assignee $egNamespaceServicePrincipalObjectID --role "Azure Event Hubs Data Sender" --scope $namespaceresourceid

Tworzenie subskrypcji zdarzeń za pomocą usługi Event Hubs jako punktu końcowego

Aby utworzyć subskrypcję zdarzeń dla utworzonego wcześniej tematu przestrzeni nazw, zastąp symbole zastępcze rzeczywistymi wartościami i uruchom następujące polecenia. Ta subskrypcja jest skonfigurowana do używania centrum zdarzeń jako procedury obsługi zdarzeń.

Symbol zastępczy Komentarze
EVENTSUBSCRIPTIONNAME Określ nazwę subskrypcji zdarzeń dla tematu przestrzeni nazw.
eventSubscriptionName="EVENTSUBSCRIPTIONNAME"
eventhubresourceid=$(az eventhubs eventhub show -n $ehubName --namespace-name $ehubNsName -g $rgName --query "{I:id}" -o tsv) 

az resource create --api-version 2023-06-01-preview --resource-group $rgName --namespace Microsoft.EventGrid --resource-type eventsubscriptions --name $eventSubscriptionName --parent namespaces/$nsName/topics/$nsTopicName --location $location --properties "{\"deliveryConfiguration\":{\"deliveryMode\":\"Push\",\"push\":{\"maxDeliveryCount\":10,\"deliveryWithResourceIdentity\":{\"identity\":{\"type\":\"SystemAssigned\"},\"destination\":{\"endpointType\":\"EventHub\",\"properties\":{\"resourceId\":\"$eventhubresourceid\"}}}}}}"

Konfigurowanie routingu w przestrzeni nazw usługi Event Grid

Uruchom następujące polecenia, aby włączyć routing w przestrzeni nazw w celu kierowania komunikatów lub zdarzeń do utworzonego wcześniej tematu przestrzeni nazw. Subskrypcja zdarzeń w tym temacie przestrzeni nazw przekazuje te zdarzenia do centrum zdarzeń skonfigurowanego jako procedura obsługi zdarzeń.

routeTopicResourceId=$(az eventgrid namespace topic show -g $rgName --namespace-name $nsName -n $nsTopicName --query "{I:id}" -o tsv) 
az eventgrid namespace create -g $rgName -n $nsName --topic-spaces-configuration "{state:Enabled,'routeTopicResourceId':$routeTopicResourceId}"

Klient klienta, obszar tematu i powiązania uprawnień

Teraz utwórz klienta, aby wysłać kilka komunikatów na potrzeby testowania. W tym kroku utworzysz klienta, przestrzeń tematu z tematem oraz powiązania wydawcy i subskrybenta.

Aby uzyskać szczegółowe instrukcje, zobacz Szybki start: publikowanie i subskrybowanie komunikatów MQTT w przestrzeni nazw usługi Event Grid przy użyciu interfejsu wiersza polecenia platformy Azure.

Symbol zastępczy Komentarze
CLIENTNAME Określ nazwę klienta, który wysyła kilka komunikatów testowych.
CERTIFICATETHUMBPRINT Odcisk palca certyfikatu klienta. Zapoznaj się z powyższym przewodnikiem Szybki start, aby uzyskać instrukcje dotyczące tworzenia certyfikatu i wyodrębniania odcisku palca. Użyj tego samego odcisku palca w narzędziu MQTTX, aby wysyłać komunikaty testowe.
TOPICSPACENAME Określ nazwę obszaru tematu do utworzenia.
PUBLSHERBINDINGNAME Określ nazwę powiązania wydawcy.
SUBSCRIBERBINDINGNAME Określ nazwę powiązania subskrybenta.
clientName="CLIENTNAME"
clientAuthName="client1-authnID" 
clientThumbprint="CERTIFICATETHUMBPRINT"

topicSpaceName="TOPICSPACENAME"
publisherBindingName="PUBLSHERBINDINGNAME"
subscriberBindingName="SUBSCRIBERBINDINGNAME"

az eventgrid namespace client create -g $rgName --namespace-name $nsName -n $clientName --authentication-name $clientAuthName --client-certificate-authentication "{validationScheme:ThumbprintMatch,allowed-thumbprints:[$clientThumbprint]}"

az eventgrid namespace topic-space create -g $rgName --namespace-name $nsName -n $topicSpaceName --topic-templates ['contosotopics/topic1']

az eventgrid namespace permission-binding create -g $rgName --namespace-name $nsName -n $publisherBindingName --client-group-name '$all' --permission publisher --topic-space-name $topicSpaceName

az eventgrid namespace permission-binding create -g $rgName --namespace-name $nsName -n $subscriberBindingName --client-group-name '$all' --permission subscriber --topic-space-name $topicSpaceName

Wysyłanie komunikatów przy użyciu MQTTX

Użyj MQTTX, aby wysłać kilka komunikatów testowych. Aby uzyskać instrukcje krok po kroku, zobacz przewodnik Szybki start: publikowanie i subskrybowanie tematu MQTT.

Sprawdź, czy centrum zdarzeń odebrało te komunikaty na stronie Przegląd dla przestrzeni nazw usługi Event Hubs.

Zrzut ekranu przedstawiający stronę Przegląd centrum zdarzeń z liczbą komunikatów przychodzących.

Wyświetlanie kierowanych komunikatów MQTT w usłudze Event Hubs przy użyciu zapytania usługi Stream Analytics

Przejdź do wystąpienia usługi Event Hubs (centrum zdarzeń) w ramach subskrypcji zdarzeń w witrynie Azure Portal. Przetwarzanie danych z centrum zdarzeń przy użyciu usługi Stream Analytics. Aby uzyskać więcej informacji, zobacz Przetwarzanie danych z usługi Azure Event Hubs przy użyciu usługi Stream Analytics — Azure Event Hubs | Microsoft Learn. Komunikaty MQTT są widoczne w zapytaniu.

Zrzut ekranu przedstawiający dane komunikatów MQTT w usłudze Event Hubs przy użyciu narzędzia zapytań usługi Stream Analytics.

Następne kroki

Aby uzyskać przykłady kodu, przejdź do tego repozytorium GitHub.