Sdílet prostřednictvím


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

Spustit Cloud Shell

  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í web Azure Portal s vybranou možností Cloud Shell a 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.

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.