Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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
Zaloguj się do Azure Portal.
Wybierz link, aby uruchomić usługę Cloud Shell.
Przełącz się na 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.
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.
Dalsze kroki
Aby uzyskać przykłady kodu, przejdź do tego repozytorium GitHub.