Självstudie: Använda namnområdesavsnitt för att dirigera MQTT-meddelanden till Azure Event Hubs (Azure CLI)
I den här självstudien får du lära dig hur du använder ett namnområdesavsnitt för att dirigera data från MQTT-klienter till Azure Event Hubs. Här är de övergripande stegen:
Förutsättningar
- Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt Azure-konto innan du börjar.
- Om du inte har använt Event Grid tidigare läser du Översikt över Event Grid innan du påbörjar den här självstudien.
- Registrera Event Grid-resursprovidern enligt stegen i Registrera Event Grid-resursprovidern.
- Kontrollera att port 8883 är öppen i brandväggen. Exemplet i den här självstudien använder MQTT-protokollet, som kommunicerar via port 8883. Den här porten kan blockeras i vissa företags- och utbildningsnätverksmiljöer.
Starta Cloud Shell
Logga in på Azure-portalen.
Välj länken för att starta Cloud Shell.
Växla till Bash.
Skapa ett Event Grid-namnområde och ämne
Om du vill skapa ett Event Grid-namnområde och ett ämne i namnområdet kopierar du följande skript till en redigerare, ersätter platshållarna med faktiska värden och kör kommandona.
Platshållare | Kommentarer |
---|---|
RESOURCEGROUPNAME |
Ange ett namn för den resursgrupp som ska skapas. |
EVENTGRIDNAMESPACENAME |
Ange namnet på Event Grid-namnområdet. |
REGION |
Ange den plats där du vill skapa resurserna. |
NAMESPACETOPICNAME |
Ange ett namn för namnområdesavsnittet. |
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
Skapa ett namnområde för Event Hubs och en händelsehubb
Om du vill skapa ett Event Hubs-namnområde och en händelsehubb i namnområdet ersätter du platshållarna med faktiska värden och kör följande kommandon. Den här händelsehubben används som händelsehanterare i den händelseprenumeration som du skapar i den här självstudien.
Platshållare | Kommentarer |
---|---|
EVENTHUBSNAMESPACENAME |
Ange ett namn för Event Hubs-namnområdet som ska skapas. |
EVENTHUBNAME |
Ange namnet på den Event Hubs-instans (händelsehubb) som ska skapas i Event Hubs-namnområdet. |
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
Ge Event Grid-namnområdet åtkomst till att skicka händelser till händelsehubben
Kör följande kommando för att lägga till tjänstens huvudnamn för Event Grid-namnområdet i rollen Azure Event Hubs Data Sender i Event Hubs-namnområdet. Det gör att Event Grid-namnrymden och resurserna i den kan skicka händelser till händelsehubben i Event Hubs-namnområdet.
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
Skapa en händelseprenumeration med Event Hubs som slutpunkt
Om du vill skapa en händelseprenumeration för det namnområdesavsnitt som du skapade tidigare ersätter du platshållarna med faktiska värden och kör följande kommandon. Den här prenumerationen är konfigurerad för att använda händelsehubben som händelsehanterare.
Platshållare | Kommentarer |
---|---|
EVENTSUBSCRIPTIONNAME |
Ange ett namn för händelseprenumerationen för namnområdesavsnittet. |
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\"}}}}}}"
Konfigurera routning i Event Grid-namnområdet
Kör följande kommandon för att aktivera routning på namnområdet för att dirigera meddelanden eller händelser till det namnområdesavsnitt som du skapade tidigare. Händelseprenumerationen i det namnområdesavsnittet vidarebefordrar dessa händelser till den händelsehubb som har konfigurerats som händelsehanterare.
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}"
Klientklient, ämnesutrymme och behörighetsbindningar
Skapa nu en klient för att skicka några meddelanden för testning. I det här steget skapar du en klient, ett ämnesutrymme med ett ämne samt bindningar för utgivare och prenumeranter.
Detaljerade instruktioner finns i Snabbstart: Publicera och prenumerera på MQTT-meddelanden på ett Event Grid-namnområde med Azure CLI.
Platshållare | Kommentarer |
---|---|
CLIENTNAME |
Ange ett namn för klienten som skickar några testmeddelanden. |
CERTIFICATETHUMBPRINT |
Tumavtryck för klientens certifikat. I snabbstarten ovan finns instruktioner för att skapa ett certifikat och extrahera ett tumavtryck. Använd samma tumavtryck i MQTTX-verktyget för att skicka testmeddelanden. |
TOPICSPACENAME |
Ange ett namn för det ämnesutrymme som ska skapas. |
PUBLSHERBINDINGNAME |
Ange ett namn för utgivarbindningen. |
SUBSCRIBERBINDINGNAME |
Ange ett namn för prenumerantbindningen. |
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
Skicka meddelanden med MQTTX
Använd MQTTX för att skicka några testmeddelanden. Stegvisa instruktioner finns i snabbstarten: Publicera och prenumerera på ett MQTT-ämne.
Kontrollera att händelsehubben tog emot dessa meddelanden på sidan Översikt för event hubs-namnområdet.
Visa dirigerade MQTT-meddelanden i Event Hubs med hjälp av en Stream Analytics-fråga
Gå till Event Hubs-instansen (händelsehubben) i din händelseprenumeration i Azure-portalen. Bearbeta data från din händelsehubb med hjälp av Stream Analytics. Mer information finns i Bearbeta data från Azure Event Hubs med Stream Analytics – Azure Event Hubs | Microsoft Learn. Du kan se MQTT-meddelandena i frågan.
Nästa steg
För kodexempel går du till den här GitHub-lagringsplatsen.