Udostępnij za pomocą


Samouczek: Używanie tematów przestrzeni nazw do kierowania komunikatów MQTT do usługi Azure Event Hubs (Azure CLI)

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 służy do komunikacji za pośrednictwem portu 8883. Ten port może zostać zablokowany w niektórych środowiskach sieci firmowych i edukacyjnych.

Uruchamianie usługi Cloud Shell

  1. Zaloguj się do Azure Portal.

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

  3. Przełącz się na Bash.

    Zrzut ekranu przedstawiający portal Azure z otwartym Cloud Shell i wybraną 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.

Placeholder Comments
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.

Placeholder Comments
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

Przyznaj przestrzeni nazw Event Grid dostęp do wysyłania zdarzeń do huba zdarzeń

Uruchom następujące polecenie, aby dodać główną usługę przestrzeni nazw Event Grid do roli Wysyłającego dane w przestrzeni nazw Azure Event Hubs. Umożliwia to przestrzeni nazw usługi Event Grid i jej zasobom 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 wartości domyślne rzeczywistymi wartościami i uruchom następujące polecenia. Ta subskrypcja jest skonfigurowana do używania Event Hub jako procedury obsługi zdarzeń.

Placeholder Comments
EVENTSUBSCRIPTIONNAME Określ nazwę subskrypcji zdarzeń dla tematu w 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ń, które jest skonfigurowane 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, przestrzeń tematyczna i powiązania uprawnień

Teraz utwórz klienta, aby wysłać kilka komunikatów na potrzeby testowania. W tym kroku utworzysz klienta, przestrzeń tematyczną oraz połączenia 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.

Placeholder Comments
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 tworzenia certyfikatu i wyodrębniania odcisku cyfrowego. 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ądu centrum zdarzeń z liczbą przychodzących wiadomości.

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

Przejdź do wystąpienia Event Hubs (centrum zdarzeń) w ramach subskrypcji w portalu Azure. 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.

Dalsze kroki

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