Kurz: Směrování zpráv MQTT do Azure Event Hubs (Azure CLI) pomocí témat oboru názvů
V tomto kurzu se dozvíte, jak pomocí tématu oboru názvů směrovat data z klientů MQTT do služby Azure Event Hubs. Tady jsou základní kroky:
Požadavky
- Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet Azure, než začnete.
- Pokud s Event Gridem teprve začínáte, přečtěte si před zahájením tohoto kurzu přehled služby Event Grid.
- Podle kroků v registraci poskytovatele prostředků Event Gridu zaregistrujte poskytovatele prostředků Event Gridu.
- Ujistěte se, že je v bráně firewall otevřený port 8883 . Ukázka v tomto kurzu používá protokol MQTT, který komunikuje přes port 8883. Tento port může být blokovaný v některých podnikových a vzdělávacích síťových prostředích.
Spustit Cloud Shell
Přihlaste se k webu Azure Portal.
Výběrem odkazu spusťte Cloud Shell.
Přepněte na Bash.
Vytvoření oboru názvů a tématu služby Event Grid
Pokud chcete vytvořit obor názvů Event Gridu a téma v oboru názvů, zkopírujte následující skript do editoru, nahraďte zástupné symboly skutečnými hodnotami a spusťte příkazy.
Zástupný symbol | Komentáře |
---|---|
RESOURCEGROUPNAME |
Zadejte název skupiny prostředků, která se má vytvořit. |
EVENTGRIDNAMESPACENAME |
Zadejte název oboru názvů Event Gridu. |
REGION |
Zadejte umístění, ve kterém chcete prostředky vytvořit. |
NAMESPACETOPICNAME |
Zadejte název tématu oboru názvů. |
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
Vytvoření oboru názvů Event Hubs a centra událostí
Pokud chcete vytvořit obor názvů služby Event Hubs a centrum událostí v oboru názvů, nahraďte zástupné symboly skutečnými hodnotami a spusťte následující příkazy. Toto centrum událostí se používá jako obslužná rutina události v odběru událostí, které vytvoříte v tomto kurzu.
Zástupný symbol | Komentáře |
---|---|
EVENTHUBSNAMESPACENAME |
Zadejte název oboru názvů služby Event Hubs, který se má vytvořit. |
EVENTHUBNAME |
Zadejte název instance služby Event Hubs (centrum událostí), který se má vytvořit v oboru názvů služby 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
Udělení přístupu k odesílání událostí do centra událostí pomocí oboru názvů Event Gridu
Spuštěním následujícího příkazu přidejte instanční objekt oboru názvů Event Gridu do role Odesílatele dat služby Azure Event Hubs v oboru názvů služby Event Hubs. Umožňuje, aby obor názvů a prostředky event Gridu odesílaly události do centra událostí v oboru názvů 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
Vytvoření odběru událostí se službou Event Hubs jako koncovým bodem
Pokud chcete vytvořit odběr událostí pro téma oboru názvů, které jste vytvořili dříve, nahraďte zástupné symboly skutečnými hodnotami a spusťte následující příkazy. Toto předplatné je nakonfigurované tak, aby jako obslužnou rutinu události používalo centrum událostí.
Zástupný symbol | Komentáře |
---|---|
EVENTSUBSCRIPTIONNAME |
Zadejte název odběru událostí pro téma oboru názvů. |
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\"}}}}}}"
Konfigurace směrování v oboru názvů Služby Event Grid
Spuštěním následujících příkazů povolte směrování v oboru názvů pro směrování zpráv nebo událostí do tématu oboru názvů, které jste vytvořili dříve. Odběr událostí v tomto tématu oboru názvů předává tyto události do centra událostí, které je nakonfigurované jako obslužná rutina události.
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, prostor tématu a vazby oprávnění
Teď vytvořte klienta, který odešle několik zpráv pro testování. V tomto kroku vytvoříte klienta, prostor tématu s tématy a vazby vydavatele a odběratele.
Podrobné pokyny najdete v tématu Rychlý start: Publikování a přihlášení k odběru zpráv MQTT v oboru názvů Služby Event Grid pomocí Azure CLI.
Zástupný symbol | Komentáře |
---|---|
CLIENTNAME |
Zadejte název klienta, který odesílá několik testovacích zpráv. |
CERTIFICATETHUMBPRINT |
Kryptografický otisk certifikátu klienta Pokyny k vytvoření certifikátu a extrakci kryptografického otisku najdete v předchozím rychlém startu. K odesílání testovacích zpráv použijte stejný kryptografický otisk v nástroji MQTTX. |
TOPICSPACENAME |
Zadejte název prostoru tématu, který se má vytvořit. |
PUBLSHERBINDINGNAME |
Zadejte název vazby vydavatele. |
SUBSCRIBERBINDINGNAME |
Zadejte název vazby odběratele. |
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
Odesílání zpráv pomocí MQTTX
K odeslání několika testovacích zpráv použijte MQTTX. Podrobné pokyny najdete v rychlém startu: Publikování a přihlášení k odběru tématu MQTT.
Ověřte, že centrum událostí přijalo tyto zprávy na stránce Přehled vašeho oboru názvů služby Event Hubs.
Zobrazení směrovaných zpráv MQTT ve službě Event Hubs pomocí dotazu Stream Analytics
Na webu Azure Portal přejděte do instance služby Event Hubs (centrum událostí) ve vašem odběru událostí. Zpracování dat z centra událostí pomocí Stream Analytics Další informace najdete v tématu Zpracování dat ze služby Azure Event Hubs pomocí Stream Analytics – Azure Event Hubs | Microsoft Learn. V dotazu můžete zobrazit zprávy MQTT.
Další kroky
Ukázky kódu naleznete v tomto úložišti GitHub.