Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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
Accedere al portale di Azure.
Selezionare il collegamento per avviare Cloud Shell.
Passare a Bash.
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.
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.
Passaggi successivi
Per gli esempi di codice, passare a questo repository GitHub.