Publicera i namnområdesavsnitt och använda händelser i Azure Event Grid

Den här artikeln innehåller en snabb introduktion till pull-leverans med bash curl shell-kommandot för att publicera, ta emot och bekräfta händelser. Event Grid-resurser skapas med HJÄLP av CLI-kommandon. Den här artikeln är lämplig för ett snabbtest av pull-leveransfunktionen. Exempelkod med dataplanets SDK:er finns i .NET - eller Java-exemplen. För Java tillhandahåller vi exempelkoden i två artiklar: publicera händelser och ta emot snabbstarter för händelser . Mer information om pull-leveransmodellen finns i artiklarna begrepp och översikt över pull-leverans.

Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt Azure-konto innan du börjar.

Förutsättningar

  • Den här artikeln kräver version 2.0.70 eller senare av Azure CLI. Om du använder Azure Cloud Shell är den senaste versionen redan installerad.

Skapa en resursgrupp

Skapa en Azure-resursgrupp med kommandot az group create. Du använder den här resursgruppen för att innehålla alla resurser som skapats i den här artikeln.

De allmänna stegen för att använda Cloud Shell för att köra kommandon är:

  • Välj Öppna Cloud Shell för att se ett Azure Cloud Shell-fönster i den högra rutan.
  • Kopiera kommandot och klistra in det i Azure Cloud Shell-fönstret.
  • Kör kommandot genom att trycka på RETUR.
  1. Deklarera en variabel som innehåller namnet på en Azure-resursgrupp. Ange ett namn för resursgruppen genom att <your-resource-group-name> ersätta med ett värde som du gillar.

    resource_group="<your-resource-group-name>"
    
  2. Skapa en resursgrupp. Ändra platsen efter behov.

    az group create --name $resource_group --location eastus
    

Aktivera Event Grid-resursprovidern

  1. Om du inte tidigare har använt Event Grid i din Azure-prenumeration kan du behöva registrera Event Grid-resursprovidern. Registrera providern genom att köra följande kommando:

    az provider register --namespace Microsoft.EventGrid
    
  2. Det kan ta en stund innan registreringen är klar. Kontrollera statusen genom att köra följande kommando:

    az provider show --namespace Microsoft.EventGrid --query "registrationState"
    

    När registrationState är Registered kan du fortsätta.

Skapa ett namnområde

Ett Event Grid-namnområde innehåller en användardefinierad slutpunkt som du publicerar dina händelser till. I följande exempel skapas ett namnområde i resursgruppen med bash i Azure Cloud Shell. Namnområdesnamnet måste vara unikt eftersom det ingår i en DNS-post (Domain Name System). Ett namnområdesnamn bör uppfylla följande regler:

  • Den ska vara mellan 3 och 50 tecken.
  • Den bör vara regionalt unik.
  • Endast tillåtna tecken är a-z, A-Z, 0-9 och -
  • Det bör inte börja med reserverade nyckelordsprefix som Microsoft, System eller EventGrid.
  1. Deklarera en variabel för att lagra namnet på Event Grid-namnområdet. Ange ett namn för namnområdet genom att <your-namespace-name> ersätta med ett värde som du gillar.

    namespace="<your-namespace-name>"
    
  2. Skapa ett namnområde. Du kanske vill ändra platsen där den distribueras.

    az eventgrid namespace create -g $resource_group -n $namespace -l eastus
    

Skapa ett namnområdesavsnitt

Skapa ett ämne som används för att lagra alla händelser som publicerats till namnområdesslutpunkten.

  1. Deklarera en variabel som innehåller namnet på ditt namnområdesämne. Ange ett namn för namnområdesavsnittet genom att <your-topic-name> ersätta med ett värde som du gillar.

    topic="<your-topic-name>"
    
  2. Skapa ditt namnområdesämne:

    az eventgrid namespace topic create -g $resource_group -n $topic --namespace-name $namespace 
    

Skapa en händelseprenumeration

Skapa en händelseprenumeration som ställer in leveransläget i , vilket stöder pull-leverans. Mer information om alla konfigurationsalternativ finns i det senaste REST API:et för Event Grid-kontrollplanet.

  1. Deklarera en variabel för att lagra namnet på en händelseprenumeration i ditt namnområdesavsnitt. Ange ett namn för händelseprenumerationen genom att <your-event-subscription-name> ersätta med ett värde som du gillar.

    event_subscription="<your-event-subscription-name>"
    
  2. Skapa en händelseprenumeration till namnområdesavsnittet:

    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}}"
    

Skicka händelser till ditt ämne

Skicka nu en exempelhändelse till namnområdesavsnittet genom att följa stegen i det här avsnittet.

Visa namnområdesåtkomstnycklar

  1. Hämta de åtkomstnycklar som är associerade med det namnområde som du skapade. Du använder en av dem för att autentisera när du publicerar händelser. Om du vill visa en lista över dina nycklar behöver du det fullständiga namnområdesresurs-ID:t först. Hämta det genom att köra följande kommando:

    namespace_resource_id=$(az eventgrid namespace show -g $resource_group -n $namespace --query "id" --output tsv)
    
  2. Hämta den första nyckeln från namnområdet:

    key=$(az eventgrid namespace list-key -g $resource_group --namespace-name $namespace --query "key1" --output tsv)
    

Publicera en händelse

  1. Hämta värdnamnet för namnområdet. Du använder den för att skriva namnområdets HTTP-slutpunkt till vilken händelser skickas. Följande åtgärder var först tillgängliga med API-versionen 2023-06-01-preview.

    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. Skapa en CloudEvents-exempelkompatibel händelse:

    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"}} '
    

    Elementet data är nyttolasten för din händelse. All välformulerad JSON kan stå i det här fältet. Mer information om egenskaper (även kallade kontextattribut) som kan användas i en händelse finns i CloudEvents-specifikationerna .

  3. Använd CURL för att skicka händelsen till ämnet. CURL är ett verktyg som skickar HTTP-förfrågningar.

    curl -X POST -H "Content-Type: application/cloudevents+json" -H "Authorization:SharedAccessKey $key" -d "$event" $publish_operation_uri
    

Ta emot händelsen

Du får händelser från Event Grid med hjälp av en slutpunkt som refererar till en händelseprenumeration.

  1. Skriv slutpunkten genom att köra följande kommando:

    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. Skicka en begäran om att använda händelsen:

    curl -X POST -H "Content-Type: application/json" -H "Authorization:SharedAccessKey $key" $receive_operation_uri
    

Bekräfta en händelse

När du har fått en händelse skickar du händelsen till ditt program för bearbetning. När du har bearbetat händelsen behöver du inte längre den händelsen för att vara med i din händelseprenumeration. Om du vill instruera Event Grid att ta bort händelsen bekräftar du den med hjälp av dess låstoken som du fick på mottagningsåtgärdens svar.

  1. I föregående steg bör du ha fått ett svar som innehåller ett brokerProperties objekt med en lockToken egenskap. Kopiera värdet för låstoken och ange det på en miljövariabel:

    lockToken="<paste-the-lock-token-here>"
    
  2. Skapa nu nyttolasten för bekräftelseåtgärden, som anger låstoken för händelsen som du vill bekräfta.

    acknowledge_request_payload=' { "lockTokens": ["'$lockToken'"]} '
    
  3. Fortsätt med att skapa strängen med bekräftelseåtgärdens URI:

    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. Skicka slutligen en begäran om att bekräfta den mottagna händelsen:

    curl -X POST -H "Content-Type: application/json" -H "Authorization:SharedAccessKey $key" -d "$acknowledge_request_payload" $acknowledge_operation_uri
    

    Om bekräftelseåtgärden körs innan låstoken upphör att gälla (300 sekunder som angetts när vi skapade händelseprenumerationen) bör du se ett svar som i följande exempel:

    {"succeededLockTokens":["CiYKJDQ4NjY5MDEyLTk1OTAtNDdENS1BODdCLUYyMDczNTYxNjcyMxISChDZae43pMpE8J8ovYMSQBZS"],"failedLockTokens":[]}
    

Nästa steg

Mer information om pull-leveransmodellen finns i Översikt över pull-leverans.