Condividi tramite


Esercitazione: Utilizzare gli argomenti dello spazio dei nomi per instradare i messaggi MQTT verso Azure Event Hubs (CLI di Azure)

In questa esercitazione si apprenderà come usare un argomento dello spazio dei nomi per instradare i dati dai client MQTT a Hub eventi di Azure. Ecco i passaggi generali:

Prerequisiti

  • Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.
  • Se non si ha familiarità con Event Grid, leggere la panoramica di Event Grid prima di iniziare questo tutorial.
  • Registrare il provider di risorse di Griglia di eventi in base alla procedura descritta in Registrare il provider di risorse di Griglia di eventi.
  • Assicurarsi che la porta 8883 sia aperta nel firewall. L'esempio in questa esercitazione usa il protocollo MQTT, che comunica sulla porta 8883. Questa porta potrebbe essere bloccata in alcuni ambienti di rete aziendali e didattici.

Avviare Cloud Shell

  1. Accedere al portale di Azure.

  2. Selezionare il collegamento per avviare Cloud Shell.

  3. Passare a Bash.

    Screenshot che mostra il portale di Azure con Cloud Shell aperto e Bash selezionato.

Creare uno spazio dei nomi e argomento di Griglia di eventi

Per creare un namespace di Event Grid e un argomento nel namespace, copiare lo script seguente in un editor, sostituire i segnaposto con valori effettivi ed eseguire i comandi.

Segnaposto Comments
RESOURCEGROUPNAME Specificare un nome per il gruppo di risorse da creare.
EVENTGRIDNAMESPACENAME Specificare il nome per lo spazio dei nomi di Event Grid.
REGION Specificare la posizione in cui si desidera creare le risorse.
NAMESPACETOPICNAME Specificare un nome per l'argomento dello spazio dei nomi.
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

Creare uno spazio dei nomi di Hub eventi e un hub eventi

Per creare un namespace di Event Hubs e un event hub nel namespace, sostituire i segnaposto con valori effettivi ed eseguire i comandi che seguono. Questo hub eventi viene usato come gestore eventi nella sottoscrizione di eventi creata in questa esercitazione.

Segnaposto Comments
EVENTHUBSNAMESPACENAME Specificare un nome per lo spazio dei nomi di Hub Eventi da creare.
EVENTHUBNAME Specificare il nome per l'istanza di Event Hubs (event hub) da creare nello spazio dei nomi di 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

Concedere allo spazio dei nomi di Event Grid l'accesso per inviare eventi all'Event Hub

Eseguire il comando seguente per aggiungere l'entità servizio dello spazio dei nomi Di Griglia di eventi al ruolo Mittente dati Hub eventi di Azure nello spazio dei nomi di Hub eventi. Consente al namespace Event Grid e alle risorse in esso contenute di inviare eventi all'Event Hub nel namespace 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

Creare una sottoscrizione di eventi con Event Hubs come endpoint

Per creare una sottoscrizione di eventi per l'argomento dello spazio dei nomi creato in precedenza, sostituire i segnaposto con valori effettivi ed eseguire i comandi seguenti. Questa sottoscrizione è configurata per l'uso dell'hub eventi come gestore eventi.

Segnaposto Comments
EVENTSUBSCRIPTIONNAME Specificare un nome per la sottoscrizione di eventi per l'argomento dello spazio dei nomi.
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\"}}}}}}"

Configurare il routing nello spazio dei nomi di Griglia di eventi

Eseguire i comandi seguenti per abilitare il routing sullo spazio dei nomi per instradare messaggi o eventi all'argomento dello spazio dei nomi creato in precedenza. La sottoscrizione di eventi in tale argomento dello spazio dei nomi inoltra tali eventi all'hub eventi configurato come gestore eventi.

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

Client client, spazio argomenti e associazioni di autorizzazioni

Creare ora un client per inviare alcuni messaggi per il test. In questo passaggio vengono creati un client, uno spazio argomenti con un argomento e associazioni di server di pubblicazione e sottoscrittori.

Per istruzioni dettagliate, vedere Guida introduttiva: Pubblicare e sottoscrivere messaggi MQTT in uno spazio dei nomi di Event Grid con la CLI di Azure.

Segnaposto Comments
CLIENTNAME Specificare un nome per il client che invia alcuni messaggi di test.
CERTIFICATETHUMBPRINT Impronta digitale del certificato del cliente. Consultare il quickstart precedente per le istruzioni su come creare un certificato ed estrarre una thumbprint. Utilizzare la stessa impronta digitale nello strumento MQTTX per inviare messaggi di test.
TOPICSPACENAME Specificare un nome per lo spazio degli argomenti da creare.
PUBLSHERBINDINGNAME Specificare un nome per l'associazione del server di pubblicazione.
SUBSCRIBERBINDINGNAME Specificare un nome per il vincolo del sottoscrittore.
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

Inviare messaggi con MQTTX

Usare MQTTX per inviare alcuni messaggi di test. Per istruzioni dettagliate, vedere la guida introduttiva: Pubblicare e sottoscrivere un argomento MQTT.

Verificare che l'hub eventi abbia ricevuto tali messaggi nella pagina Panoramica per lo spazio dei nomi di Hub eventi.

Screenshot che mostra la pagina Panoramica dell'hub eventi con il conteggio dei messaggi in ingresso.

Visualizzare i messaggi MQTT instradati in Hub eventi usando una query di Stream Analytics

Passare all'istanza di Hub eventi (hub eventi) all'interno della sottoscrizione di eventi nel portale di Azure. Elaborare i dati dall'hub eventi usando Stream Analytics. Per altre informazioni, vedere Elaborare i dati da Hub eventi di Azure usando Analisi di flusso - Hub eventi di Azure | Microsoft Learn. È possibile visualizzare i messaggi MQTT nella query.

Screenshot mostra i dati dei messaggi MQTT su Event Hubs usando lo strumento di interrogazione di Stream Analytics.

Passaggi successivi

Per gli esempi di codice, passare a questo repository GitHub.