Condividi tramite


Esercitazione: Usare gli argomenti dello spazio dei nomi per instradare i messaggi MQTT a Hub eventi di Azure (interfaccia della riga di comando 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 principali:

Prerequisiti

  • Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.
  • Se non si ha familiarità con Griglia di eventi, leggere la panoramica di Griglia di eventi prima di iniziare questa esercitazione.
  • 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 un argomento di Griglia di eventi

Per creare uno spazio dei nomi di Griglia di eventi e un argomento nello spazio dei nomi, copiare lo script seguente in un editor, sostituire i segnaposto con valori effettivi ed eseguire i comandi.

Segnaposto Commenti
RESOURCEGROUPNAME Specificare un nome per il gruppo di risorse da creare.
EVENTGRIDNAMESPACENAME Specificare il nome per lo spazio dei nomi di Griglia di eventi.
REGION Specificare il percorso 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 uno spazio dei nomi di Hub eventi e un hub eventi nello spazio dei nomi, sostituire i segnaposto con valori effettivi ed eseguire i comandi seguenti. Questo hub eventi viene usato come gestore eventi nella sottoscrizione di eventi creata in questa esercitazione.

Segnaposto Commenti
EVENTHUBSNAMESPACENAME Specificare un nome per lo spazio dei nomi di Hub eventi da creare.
EVENTHUBNAME Specificare il nome dell'istanza di Hub eventi (hub eventi) da creare nello spazio dei nomi di Hub eventi.
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 Griglia di eventi l'accesso per inviare eventi all'hub eventi

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 allo spazio dei nomi e alle risorse di Griglia di eventi di inviare eventi all'hub eventi nello spazio dei nomi di Hub eventi.

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 Hub eventi 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 Commenti
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 degli argomenti e associazioni di autorizzazioni

Creare ora un client per inviare alcuni messaggi per il test. In questo passaggio si crea un client, uno spazio argomenti con un argomento e le associazioni di server di pubblicazione e sottoscrittore.

Per istruzioni dettagliate, vedere Guida introduttiva: Pubblicare e sottoscrivere messaggi MQTT in uno spazio dei nomi di Griglia di eventi con l'interfaccia della riga di comando di Azure.

Segnaposto Commenti
CLIENTNAME Specificare un nome per il client che invia alcuni messaggi di test.
CERTIFICATETHUMBPRINT Identificazione personale del certificato del client. Vedere la guida introduttiva precedente per istruzioni su come creare un certificato ed estrarre un'identificazione personale. Usare la stessa identificazione personale 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 dell'editore.
SUBSCRIBERBINDINGNAME Specificare un nome per l'associazione 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 indirizzati in Hub eventi usando una query di Analisi di flusso

Passare all'istanza di Hub eventi (hub eventi) all'interno della sottoscrizione di eventi nella portale di Azure. Elaborare i dati dall'hub eventi usando Analisi di flusso. 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 che mostra i dati dei messaggi MQTT in Hub eventi usando lo strumento di query di Analisi di flusso.

Passaggi successivi

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