Delen via


Quickstart: Publiceren naar naamruimteonderwerpen en gebeurtenissen verwerken in Azure Event Grid

In deze quickstart voert u pull-levering uit met behulp van de curl bash-shell-opdracht voor het publiceren, ontvangen en bevestigen van gebeurtenissen. Gebruik Azure CLI-opdrachten om Azure Event Grid-resources te maken. Dit artikel is geschikt voor een snelle test van de functionaliteit voor pull-levering.

Zie de volgende resources voor voorbeeldcode die gebruikmaakt van de SDK's voor het gegevensvlak:

Zie de artikelen Azure Event Grid-naamruimteconcepten en Pull-levering met HTTP voor meer informatie over het pull-leveringsmodel.

Als u geen Azure-account hebt, maak dan een gratis account aan voordat u begint.

Vereiste voorwaarden

  • Voor dit artikel is versie 2.0.70 of hoger van de Azure CLI vereist. Als u Azure Cloud Shell gebruikt, is de nieuwste versie al geïnstalleerd.

Een brongroep maken

Maak een Azure-resourcegroep met de opdracht az group create. Gebruik deze hulpmiddelengroep om alle hulpmiddelen te omvatten die u in dit artikel maakt.

De algemene stappen voor het gebruik van Cloud Shell voor het uitvoeren van opdrachten zijn:

  • Selecteer Cloud Shell openen om een Azure Cloud Shell-venster in het rechterdeelvenster weer te geven.
  • Kopieer de opdracht en plak deze in het Azure Cloud Shell-venster.
  • Druk op ENTER om de opdracht uit te voeren.
  1. Declareer een variabele voor het opslaan van de naam van een Azure-resourcegroep. Geef een naam op voor de resourcegroep door <your-resource-group-name> te vervangen door uw waarde.

    resource_group="<your-resource-group-name>"
    
  2. Maak een resourcegroep. U kunt de locatie wijzigen in elke Azure-locatie.

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

De Event Grid-resourceprovider inschakelen

  1. Als dit de eerste keer is dat u Event Grid in uw Azure-abonnement gebruikt, moet u mogelijk de Event Grid-resourceprovider registreren. Voer de volgende opdracht uit om de provider te registreren:

    az provider register --namespace Microsoft.EventGrid
    
  2. Het kan even duren voordat de registratie is voltooid. Voer de volgende opdracht uit om de status te controleren:

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

    Wanneer registrationStateRegistered is, bent u klaar om door te gaan.

Een naamruimte maken

Een Event Grid-naamruimte biedt een door de gebruiker gedefinieerd eindpunt waarnaar u uw gebeurtenissen plaatst. In het volgende voorbeeld wordt een naamruimte in uw resourcegroep gemaakt met behulp van Bash in Azure Cloud Shell. De naamruimtenaam moet uniek zijn omdat deze deel uitmaakt van een DNS-vermelding (Domain Name System). Een naamruimtenaam moet voldoen aan de volgende regels:

  • Het moet tussen de 3 en 50 tekens zijn.
  • Het moet regionaal uniek zijn.
  • Alleen toegestane tekens zijn: a-z, A-Z, 0-9 en -
  • Het mag niet beginnen met voorvoegsels voor gereserveerde sleutelwoorden zoals Microsoft, Systemof EventGrid.
  1. Declareer een variabele om de naam voor uw Event Grid-naamruimte op te slaan. Geef een naam op voor de naamruimte door <your-namespace-name> te vervangen door uw waarde.

    namespace="<your-namespace-name>"
    
  2. Een naamruimte maken. Mogelijk wilt u de locatie wijzigen waar u deze implementeert.

    az eventgrid namespace create --resource-group $resource_group --name $namespace --location eastus
    

Een naamruimteonderwerp maken

Maak een onderwerp dat alle gebeurtenissen bevat die naar het naamruimte-eindpunt zijn gepubliceerd.

  1. Declareer een variabele om de naam voor uw naamruimteonderwerp op te slaan. Specificeer een naam voor het onderwerp van de naamruimte door <your-topic-name> te vervangen door uw waarde.

    topic="<your-topic-name>"
    
  2. Uw naamruimteonderwerp maken:

    az eventgrid namespace topic create --resource-group $resource_group --name $topic --namespace-name $namespace
    

Een gebeurtenisabonnement maken

Maak een gebeurtenisabonnement met als leveringsmodus wachtrij, die pull-levering ondersteunt. Zie azure Event Grid REST API voor meer informatie over alle configuratieopties.

  1. Declareer een variabele voor het opslaan van de naam voor een gebeurtenisabonnement in uw naamruimteonderwerp. Geef een naam op voor het gebeurtenisabonnement door <your-event-subscription-name> te vervangen door uw waarde.

    event_subscription="<your-event-subscription-name>"
    
  2. Maak een gebeurtenisabonnement op het onderwerp van de naamruimte:

    az eventgrid namespace topic event-subscription create --resource-group $resource_group --topic-name $topic --name $event_subscription --namespace-name $namespace --delivery-configuration "{deliveryMode:Queue,queue:{receiveLockDurationInSeconds:300,maxDeliveryCount:4,eventTimeToLive:P1D}}"
    

Gebeurtenissen verzenden naar uw onderwerp

Verzend een voorbeeldgebeurtenis naar het onderwerp van de naamruimte door de stappen in deze sectie te volgen.

Toegangssleutels voor naamruimte weergeven

  1. Haal de toegangssleutels op die zijn gekoppeld aan de naamruimte die u hebt gemaakt. U hebt een van deze nodig om te verifiëren bij het publiceren van gebeurtenissen. Als u uw sleutels wilt weergeven, haalt u de volledige resource-id van de naamruimte op. Voer de volgende opdracht uit:

    namespace_resource_id=$(az eventgrid namespace show --resource-group $resource_group --name $namespace --query "id" --output tsv)
    
  2. Haal de eerste sleutel op uit de naamruimte:

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

Een gebeurtenis publiceren

  1. Haal de hostnaam van de naamruimte op. U gebruikt deze om het HTTP-eindpunt voor de naamruimte op te stellen waarnaar gebeurtenissen worden verzonden. De volgende bewerkingen waren voor het eerst beschikbaar met api-versie 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. Maak een voorbeeldgebeurtenis die compatibel is met CloudEvents :

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

    Het data element vormt de payload van uw event. Elke juist opgemaakte JSON kan in dit veld worden ingevoerd. Eigenschappen die in een gebeurtenis kunnen worden geplaatst, worden ook wel contextkenmerken genoemd. Zie CloudEvents voor meer informatie.

  3. Gebruik CURL om de gebeurtenis naar het onderwerp te verzenden. CURL is een hulpprogramma waarmee HTTP-aanvragen worden verzonden.

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

Ontvang de gebeurtenis

U ontvangt gebeurtenissen van Event Grid met behulp van een eindpunt dat verwijst naar een gebeurtenisabonnement.

  1. Stel het eindpunt samen door de volgende opdracht uit te voeren:

    receive_operation_uri="https://"$(az eventgrid namespace show --resource-group $resource_group --name $namespace --query "topicsConfiguration.hostname" --output tsv)"/topics/"$topic/eventsubscriptions/$event_subscription:receive?api-version=2023-06-01-preview
    
  2. Dien een aanvraag in om de gebeurtenis bij te wonen.

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

Een gebeurtenis bevestigen

Nadat u een gebeurtenis hebt ontvangen, geeft u deze gebeurtenis door aan uw toepassing voor verwerking. Nadat u de gebeurtenis hebt verwerkt, hebt u die gebeurtenis niet meer nodig in uw gebeurtenisabonnement. Als u Event Grid wilt instrueren om de gebeurtenis te verwijderen, bevestigt u deze met behulp van het vergrendelingstoken dat u hebt ontvangen in het antwoord van de ontvangstbewerking.

  1. In de vorige sectie hebt u een antwoord ontvangen dat een brokerProperties object met een lockToken eigenschap bevat. Kopieer de waarde van het vergrendelingstoken en stel deze in op een omgevingsvariabele:

    lockToken="<paste-the-lock-token-here>"
    
  2. Bouw de payload van de bevestigingsbewerking, waarmee het vergrendelingstoken wordt opgegeven voor de te bevestigen gebeurtenis.

    acknowledge_request_payload=' { "lockTokens": ["'$lockToken'"]} '
    
  3. Ga verder met het bouwen van de tekenreeks met de URI voor de erkenningsbewerking:

    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. Dien ten slotte een aanvraag in om de ontvangen gebeurtenis te bevestigen:

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

    Als de bevestigingsbewerking wordt uitgevoerd voordat het vergrendelings-token verloopt (300 seconden zoals ingesteld bij het maken van het gebeurtenisabonnement), zou u een antwoord moeten zien zoals in het volgende voorbeeld:

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

Volgende stap

Zie Pull-levering met HTTP voor meer informatie over het pull-leveringsmodel.