Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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:
- .NET: Berichten verzenden en ontvangen van een Azure Event Grid-naamruimteonderwerp (.NET)
- Java: Gebeurtenissen publiceren naar naamruimteonderwerpen met behulp van Java
- Java: gebeurtenissen ontvangen met behulp van pull-levering met Java
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
Gebruik de Bash-omgeving in Azure Cloud Shell. Zie Aan de slag met Azure Cloud Shell voor meer informatie.
Als je de voorkeur geeft aan het lokaal uitvoeren van CLI-referentiecommando's, installeer dan de Azure CLI. Als je op Windows of macOS werkt, overweeg dan om Azure CLI in een Docker-container te draaien. Voor meer informatie, zie Hoe u de Azure CLI in een Docker-container kunt uitvoeren.
Als u een lokale installatie gebruikt, meldt u zich aan bij Azure CLI met de opdracht az login. Om het authenticatieproces te voltooien, volgt u de stappen die op uw terminal worden weergegeven. Zie Verifiëren bij Azure met behulp van Azure CLI voor andere aanmeldingsopties.
Wanneer u daarom wordt gevraagd, installeer de Azure CLI-extensie bij het eerste gebruik. Zie Extensies gebruiken en beheren met de Azure CLIvoor meer informatie over extensies.
Voer az version uit om de geïnstalleerde versie en de afhankelijke bibliotheken te vinden. Voer az upgrade uit om naar de nieuwste versie te upgraden.
- 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.
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>"
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
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
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
registrationState
Registered
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
,System
ofEventGrid
.
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>"
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.
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>"
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.
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>"
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
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)
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
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
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.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.
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
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.
In de vorige sectie hebt u een antwoord ontvangen dat een
brokerProperties
object met eenlockToken
eigenschap bevat. Kopieer de waarde van het vergrendelingstoken en stel deze in op een omgevingsvariabele:lockToken="<paste-the-lock-token-here>"
Bouw de payload van de bevestigingsbewerking, waarmee het vergrendelingstoken wordt opgegeven voor de te bevestigen gebeurtenis.
acknowledge_request_payload=' { "lockTokens": ["'$lockToken'"]} '
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
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.