Pubblicare negli argomenti dello spazio dei nomi e utilizzare eventi in Griglia di eventi di Azure
Questo articolo offre un'introduzione rapida al recapito pull usando il curl
comando della shell bash per pubblicare, ricevere e confermare gli eventi. Le risorse di Griglia di eventi vengono create usando i comandi dell'interfaccia della riga di comando. Questo articolo è adatto per un rapido test della funzionalità di recapito pull. Per il codice di esempio che usa gli SDK del piano dati, vedere gli esempi di .NET o Java. Per Java, viene fornito il codice di esempio in due articoli: pubblicare eventi e ricevere gli eventi di avvio rapido.
Per altre informazioni sul modello di recapito pull, vedere gli articoli concetti e panoramica del recapito pull.
Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.
Prerequisiti
Usare l'ambiente Bash in Azure Cloud Shell. Per altre informazioni, vedere Avvio rapido per Bash in Azure Cloud Shell.
Se si preferisce eseguire i comandi di riferimento dell'interfaccia della riga di comando in locale, installare l'interfaccia della riga di comando di Azure. Per l'esecuzione in Windows o macOS, è consigliabile eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker. Per altre informazioni, vedere Come eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker.
Se si usa un'installazione locale, accedere all'interfaccia della riga di comando di Azure con il comando az login. Per completare il processo di autenticazione, seguire la procedura visualizzata nel terminale. Per altre opzioni di accesso, vedere Accedere con l'interfaccia della riga di comando di Azure.
Quando richiesto, installare l'estensione dell'interfaccia della riga di comando di Azure al primo uso. Per altre informazioni sulle estensioni, vedere Usare le estensioni con l'interfaccia della riga di comando di Azure.
Eseguire az version per trovare la versione e le librerie dipendenti installate. Per eseguire l'aggiornamento alla versione più recente, eseguire az upgrade.
- Questo articolo richiede la versione 2.0.70 o successiva dell'interfaccia della riga di comando di Azure. Se si usa Azure Cloud Shell, la versione più recente è già installata.
Creare un gruppo di risorse
Creare un gruppo di risorse di Azure con il comando az group create. Questo gruppo di risorse viene usato per contenere tutte le risorse create in questo articolo.
I passaggi generali per usare Cloud Shell per eseguire i comandi sono:
- Selezionare Apri Cloud Shell per visualizzare una finestra di Azure Cloud Shell nel riquadro destro.
- Copiare il comando e incollarlo nella finestra di Azure Cloud Shell.
- Premere INVIO per eseguire il comando.
Dichiarare una variabile per contenere il nome di un gruppo di risorse di Azure. Specificare un nome per il gruppo di risorse sostituendo
<your-resource-group-name>
con un valore desiderato.resource_group="<your-resource-group-name>"
Crea un gruppo di risorse. Modificare la posizione nel modo desiderato.
az group create --name $resource_group --location eastus
Abilitare il provider di risorse di Griglia di eventi
Se Griglia di eventi non è stato usato in precedenza nella sottoscrizione di Azure, potrebbe essere necessario registrare il provider di risorse di Griglia di eventi. Eseguire il comando seguente per registrare il provider:
az provider register --namespace Microsoft.EventGrid
La registrazione può richiedere qualche secondo. Per controllare lo stato, eseguire il comando seguente:
az provider show --namespace Microsoft.EventGrid --query "registrationState"
Quando
registrationState
èRegistered
, è possibile continuare.
Creare uno spazio dei nomi
Uno spazio dei nomi di Griglia di eventi fornisce un endpoint definito dall'utente a cui si pubblicano gli eventi. L'esempio seguente crea uno spazio dei nomi nel gruppo di risorse usando Bash in Azure Cloud Shell. Il nome dello spazio dei nomi deve essere univoco perché fa parte di una voce DNS (Domain Name System). Un nome dello spazio dei nomi deve soddisfare le regole seguenti:
- Deve essere compreso tra 3 e 50 caratteri.
- Deve essere univoco a livello di area.
- Solo i caratteri consentiti sono a-z, A-Z, 0-9 e -
- Non deve iniziare con i prefissi di parola chiave riservata, ad esempio
Microsoft
,System
oEventGrid
.
Dichiarare una variabile per contenere il nome per lo spazio dei nomi di Griglia di eventi. Specificare un nome per lo spazio dei nomi sostituendo
<your-namespace-name>
con un valore desiderato.namespace="<your-namespace-name>"
Creare uno spazio dei nomi. Potrebbe essere necessario modificare il percorso in cui è distribuito.
az eventgrid namespace create -g $resource_group -n $namespace -l eastus
Creare un argomento dello spazio dei nomi
Creare un argomento usato per contenere tutti gli eventi pubblicati nell'endpoint dello spazio dei nomi.
Dichiarare una variabile per contenere il nome per l'argomento dello spazio dei nomi. Specificare un nome per l'argomento dello spazio dei nomi sostituendo
<your-topic-name>
con un valore desiderato.topic="<your-topic-name>"
Creare l'argomento dello spazio dei nomi:
az eventgrid namespace topic create -g $resource_group -n $topic --namespace-name $namespace
Creare una sottoscrizione di eventi
Creare una sottoscrizione di eventi impostando la modalità di recapito su coda, che supporta il recapito pull. Per altre informazioni su tutte le opzioni di configurazione, vedere l'API REST più recente del piano di controllo di Griglia di eventi.
Dichiarare una variabile per contenere il nome di una sottoscrizione di eventi all'argomento dello spazio dei nomi. Specificare un nome per la sottoscrizione di eventi sostituendo
<your-event-subscription-name>
con un valore desiderato.event_subscription="<your-event-subscription-name>"
Creare una sottoscrizione di eventi per l'argomento dello spazio dei nomi:
az eventgrid namespace topic event-subscription create -g $resource_group --topic-name $topic -n $event_subscription --namespace-name $namespace --delivery-configuration "{deliveryMode:Queue,queue:{receiveLockDurationInSeconds:300,maxDeliveryCount:4,eventTimeToLive:P1D}}"
Inviare eventi all'argomento
Inviare ora un evento di esempio all'argomento dello spazio dei nomi seguendo la procedura descritta in questa sezione.
Elencare le chiavi di accesso dello spazio dei nomi
Ottenere le chiavi di accesso associate allo spazio dei nomi creato. Uno di essi viene usato per eseguire l'autenticazione durante la pubblicazione di eventi. Per elencare le chiavi, è necessario prima di tutto l'ID risorsa dello spazio dei nomi completo. Recuperarlo eseguendo il comando seguente:
namespace_resource_id=$(az eventgrid namespace show -g $resource_group -n $namespace --query "id" --output tsv)
Ottenere la prima chiave dallo spazio dei nomi :
key=$(az eventgrid namespace list-key -g $resource_group --namespace-name $namespace --query "key1" --output tsv)
Pubblicare un evento
Recuperare il nome host dello spazio dei nomi. Viene usato per comporre l'endpoint HTTP dello spazio dei nomi a cui vengono inviati gli eventi. Le operazioni seguenti sono state disponibili per la prima volta con la versione
2023-06-01-preview
dell'API .publish_operation_uri="https://"$(az eventgrid namespace show -g $resource_group -n $namespace --query "topicsConfiguration.hostname" --output tsv)"/topics/"$topic:publish?api-version=2023-06-01-preview
Creare un evento conforme a CloudEvents di esempio:
event=' { "specversion": "1.0", "id": "'"$RANDOM"'", "type": "com.yourcompany.order.ordercreatedV2", "source" : "/mycontext", "subject": "orders/O-234595", "time": "'`date +%Y-%m-%dT%H:%M:%SZ`'", "datacontenttype" : "application/json", "data":{ "orderId": "O-234595", "url": "https://yourcompany.com/orders/o-234595"}} '
L'elemento
data
è il payload dell'evento. Questo campo accetta qualsiasi JSON ben formato. Per altre informazioni sulle proprietà (note anche come attributi di contesto) che possono essere eseguite in un evento, vedere le specifiche di CloudEvents .Usare CURL per inviare l'evento all'argomento. CURL è un'utilità che invia richieste HTTP.
curl -X POST -H "Content-Type: application/cloudevents+json" -H "Authorization:SharedAccessKey $key" -d "$event" $publish_operation_uri
Ricevere l'evento
Si ricevono eventi da Griglia di eventi usando un endpoint che fa riferimento a una sottoscrizione di eventi.
Comporre l'endpoint eseguendo il comando seguente:
receive_operation_uri="https://"$(az eventgrid namespace show -g $resource_group -n $namespace --query "topicsConfiguration.hostname" --output tsv)"/topics/"$topic/eventsubscriptions/$event_subscription:receive?api-version=2023-06-01-preview
Inviare una richiesta per utilizzare l'evento:
curl -X POST -H "Content-Type: application/json" -H "Authorization:SharedAccessKey $key" $receive_operation_uri
Confermare un evento
Dopo aver ricevuto un evento, passare tale evento all'applicazione per l'elaborazione. Dopo aver elaborato correttamente l'evento, non è più necessario che l'evento si trovi nella sottoscrizione di eventi. Per indicare a Griglia di eventi di eliminare l'evento, confermarlo usando il token di blocco ottenuto nella risposta dell'operazione di ricezione.
Nel passaggio precedente dovrebbe essere stata ricevuta una risposta che include un
brokerProperties
oggetto con unalockToken
proprietà . Copiare il valore del token di blocco e impostarlo in una variabile di ambiente:lockToken="<paste-the-lock-token-here>"
Compilare ora il payload dell'operazione di conferma, che specifica il token di blocco per l'evento che si vuole riconoscere.
acknowledge_request_payload=' { "lockTokens": ["'$lockToken'"]} '
Procedere con la compilazione della stringa con l'URI dell'operazione di conferma:
acknowledge_operation_uri="https://"$(az eventgrid namespace show -g $resource_group -n $namespace --query "topicsConfiguration.hostname" --output tsv)"/topics/"$topic/eventsubscriptions/$event_subscription:acknowledge?api-version=2023-06-01-preview
Infine, inviare una richiesta per confermare l'evento ricevuto:
curl -X POST -H "Content-Type: application/json" -H "Authorization:SharedAccessKey $key" -d "$acknowledge_request_payload" $acknowledge_operation_uri
Se l'operazione di conferma viene eseguita prima della scadenza del token di blocco (300 secondi come impostato al momento della creazione della sottoscrizione di eventi), verrà visualizzata una risposta simile all'esempio seguente:
{"succeededLockTokens":["CiYKJDQ4NjY5MDEyLTk1OTAtNDdENS1BODdCLUYyMDczNTYxNjcyMxISChDZae43pMpE8J8ovYMSQBZS"],"failedLockTokens":[]}
Passaggi successivi
Per altre informazioni sul modello di recapito pull, vedere Panoramica del recapito pull.