Condividi tramite


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

  • 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.
  1. 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>"
    
  2. 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

  1. 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
    
  2. 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 o EventGrid.
  1. 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>"
    
  2. 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.

  1. 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>"
    
  2. 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.

  1. 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>"
    
  2. 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

  1. 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)
    
  2. 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

  1. 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-previewdell'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
    
  2. 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 .

  3. 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.

  1. 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
    
  2. 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.

  1. Nel passaggio precedente dovrebbe essere stata ricevuta una risposta che include un brokerProperties oggetto con una lockToken proprietà . Copiare il valore del token di blocco e impostarlo in una variabile di ambiente:

    lockToken="<paste-the-lock-token-here>"
    
  2. 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'"]} '
    
  3. 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
    
  4. 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.