Sdílet prostřednictvím


Návod: Použití témat oboru názvů k směrování zpráv MQTT do Azure Event Hubs (Azure CLI)

V tomto kurzu se naučíte, jak pomocí tématu oborových názvů směrovat data z MQTT klientů do služby Azure Event Hubs. Tady jsou základní kroky:

Požadavky

  • Pokud 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 .
  • Zaregistrujte poskytovatele prostředků Event Grid podle kroků v registraci 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.

Spuštění Cloud Shellu

  1. Přihlaste se k webu Azure Portal.

  2. Výběrem odkazu spusťte Cloud Shell.

  3. Přepněte na Bash.

    Snímek obrazovky znázorňující portál Azure s otevřeným Cloud Shellem a vybraným Bashem

Vytvořte obor názvů a téma pro 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.

Placeholder Comments
RESOURCEGROUPNAME Zadejte název skupiny prostředků, která se má vytvořit.
EVENTGRIDNAMESPACENAME Zadejte název oboru názvů pro Event Grid.
REGION Zadejte umístění, ve kterém chcete prostředky vytvořit.
NAMESPACETOPICNAME Uveďte název tématu pro obor 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ů služby Event Hubs a centra událostí

Chcete-li vytvořit obor názvů Event Hubs a událostní centrum v daném 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 využívá jako obslužná rutina události v odběru událostí, který vytvoříte v tomto návodu.

Placeholder Comments
EVENTHUBSNAMESPACENAME Zadejte název prostoru názvů služby Event Hubs, který má být vytvořen.
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ělit oboru názvů Event Grid přístup k odesílání událostí do centra událostí.

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 oboru názvů Event Grid a jeho prostředkům odesílat 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 nakonfigurováno tak, aby používalo Event Hub jako zpracovatele událostí.

Placeholder Comments
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 jmenném prostoru předává tyto události do Event Hubu, který je nakonfigurovaný jako obslužná rutina událostí.

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}"

Vyhrazený klient, prostor témat a svázání 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ématem a vazby pro publikování a odběr.

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.

Placeholder Comments
CLIENTNAME Zadejte název klienta, který odesílá několik testovacích zpráv.
CERTIFICATETHUMBPRINT 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 Event Hub přijal tyto zprávy na stránce Přehled vašeho prostoru názvů Event Hubs.

Snímek obrazovky znázorňující stránku Přehled centra událostí s počtem příchozích zpráv

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.

Snímek obrazovky znázorňující data zpráv MQTT ve službě Event Hubs pomocí nástroje pro dotazy Stream Analytics

Další kroky

Ukázky kódu naleznete v tomto úložišti GitHub.