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
Accedere al portale di Azure.
Selezionare il collegamento per avviare Cloud Shell.
Passare a Bash.
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.
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.
Passaggi successivi
Per gli esempi di codice, passare a questo repository GitHub.