Freigeben über


Schnellstart: Veröffentlichen in Namespace-Themen und Verarbeiten von Ereignissen in Azure Event Grid

In dieser Schnellstartanleitung rufen Sie die Übermittlung mithilfe des curl Bash-Shellbefehls ab, um Ereignisse zu veröffentlichen, zu empfangen und zu bestätigen. Verwenden Sie Azure CLI-Befehle zum Erstellen von Azure Event Grid-Ressourcen. Dieser Artikel eignet sich für einen schnellen Test der Pull-Übermittlungsfunktion.

Beispielcode, der die Datenebenen-SDKs verwendet, finden Sie in den folgenden Ressourcen:

Weitere Informationen zum Pull-Übermittlungsmodell finden Sie unter Azure Event Grid-Namespacekonzepte und Pull-Übermittlung mit HTTP-Artikeln .

Wenn Sie nicht über ein Azure-Konto verfügen, erstellen Sie ein kostenloses Konto , bevor Sie beginnen.

Voraussetzungen

  • Für diesen Artikel ist mindestens Version 2.0.70 der Azure CLI erforderlich. Wenn Sie Azure Cloud Shell verwenden, ist die neueste Version bereits installiert.

Erstellen einer Ressourcengruppe

Erstellen Sie mit dem Befehl az group create eine Azure-Ressourcengruppe. Verwenden Sie diese Ressourcengruppe, um alle Ressourcen zu enthalten, die Sie in diesem Artikel erstellen.

Die allgemeinen Schritte zur Verwendung von Cloud Shell zum Ausführen von Befehlen sind:

  • Wählen Sie "Cloud Shell öffnen " aus, um ein Azure Cloud Shell-Fenster im rechten Bereich anzuzeigen.
  • Kopieren Sie den Befehl, und fügen Sie ihn in das Azure Cloud Shell-Fenster ein.
  • Drücken Sie die EINGABETASTE, um den Befehl auszuführen.
  1. Deklarieren Sie eine Variable, die den Namen einer Azure-Ressourcengruppe enthalten soll. Geben Sie einen Namen für die Ressourcengruppe an, indem Sie <your-resource-group-name> durch Ihren Wert ersetzen.

    resource_group="<your-resource-group-name>"
    
  2. Erstellen Sie eine Ressourcengruppe. Sie können den Speicherort an einen beliebigen Azure-Speicherort ändern.

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

Aktivieren des Event Grid-Ressourcenanbieters

  1. Wenn Sie "Event Grid" zum ersten Mal in Ihrem Azure-Abonnement verwenden, müssen Sie möglicherweise den Event Grid-Ressourcenanbieter registrieren. Führen Sie den folgenden Befehl aus, um den Anbieter zu registrieren:

    az provider register --namespace Microsoft.EventGrid
    
  2. Es kann einen Moment dauern, bis die Registrierung abgeschlossen ist. Führen Sie den folgenden Befehl aus, um den Status zu überprüfen:

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

    Wenn registrationStateRegistered ist, können Sie den Vorgang fortsetzen.

Erstellen eines Namespace

Ein Event Grid-Namespace stellt einen benutzerdefinierten Endpunkt bereit, für den Sie Ihre Ereignisse bereitstellen. Im folgenden Beispiel wird mithilfe von Bash in Azure Cloud Shell ein Namespace in Ihrer Ressourcengruppe erstellt. Der Namespacename muss eindeutig sein, da er Teil eines DNS-Eintrags (Domain Name System) ist. Ein Namespacename sollte die folgenden Regeln erfüllen:

  • Es sollte zwischen 3 und 50 Zeichen bestehen.
  • Es sollte regional einzigartig sein.
  • Nur zulässige Zeichen sind: a-z, A-Z, 0-9 und -
  • Er sollte nicht mit reservierten Schlüsselwortpräfixen wie Microsoft, System oder EventGrid beginnen.
  1. Deklarieren Sie eine Variable, die den Namen für den Event Grid-Namespace enthalten soll. Geben Sie einen Namen für den Namespace an, indem Sie <your-namespace-name> durch Ihren Wert ersetzen.

    namespace="<your-namespace-name>"
    
  2. Erstellen Sie einen Namespace. Möglicherweise möchten Sie den Speicherort ändern, an dem Sie ihn bereitstellen.

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

Erstellen eines Namespacethemas

Erstellen Sie ein Thema, das alle Ereignisse enthält, die am Namespaceendpunkt veröffentlicht werden.

  1. Deklarieren Sie eine Variable, die den Namen für Ihr Namespacethema enthält. Geben Sie einen Namen für das Namespace-Thema an, indem Sie <your-topic-name> durch Ihren Wert ersetzen.

    topic="<your-topic-name>"
    
  2. Erstellen Sie Ihr Namespacethema:

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

Erstellen eines Ereignisabonnements

Erstellen Sie ein Ereignisabonnement, das den Übermittlungsmodus auf die Warteschlange festlegt, was die Pull-Übermittlung unterstützt. Weitere Informationen zu allen Konfigurationsoptionen finden Sie unter Azure Event Grid REST API.

  1. Deklarieren Sie eine Variable, die den Namen für ein Ereignisabonnement für Ihr Namespacethema enthält. Geben Sie einen Namen für das Ereignisabonnement an, indem Sie <your-event-subscription-name> durch Ihren Wert ersetzen.

    event_subscription="<your-event-subscription-name>"
    
  2. Erstellen Sie ein Ereignisabonnement für das Namespacethema:

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

Senden von Ereignissen an Ihr Thema

Senden Sie ein Beispielereignis an das Namespacethema, indem Sie die Schritte in diesem Abschnitt ausführen.

Namespace-Zugriffsschlüssel auflisten

  1. Rufen Sie die Zugriffsschlüssel ab, die dem von Ihnen erstellten Namespace zugeordnet sind. Sie benötigen eine davon, um sich beim Veröffentlichen von Ereignissen zu authentifizieren. Um Ihre Schlüssel auflisten zu können, rufen Sie die vollständige Namespaceressourcen-ID ab. Führen Sie den folgenden Befehl aus:

    namespace_resource_id=$(az eventgrid namespace show --resource-group $resource_group --name $namespace --query "id" --output tsv)
    
  2. Rufen Sie den ersten Schlüssel aus dem Namespace ab:

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

Veröffentlichen eines Ereignisses

  1. Rufen Sie den Namespace-Hostnamen ab. Sie verwenden ihn, um den Namespace-HTTP-Endpunkt zu verfassen, an den Ereignisse gesendet werden. Die folgenden Vorgänge waren zuerst mit API-Version 2023-06-01-previewverfügbar.

    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. Erstellen sie ein Beispiel für ein CloudEvents-kompatibles Ereignis:

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

    Das data Element ist die Nutzlast Ihres Ereignisses. Für dieses Feld kann ein beliebiger wohlgeformter JSON-Code verwendet werden. Eigenschaften, die in ein Ereignis gehen können, werden auch als Kontextattribute bezeichnet. Weitere Informationen finden Sie unter CloudEvents.

  3. Verwenden Sie CURL, um das Ereignis an das Thema zu senden. CURL ist ein Hilfsprogramm zum Senden von HTTP-Anforderungen.

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

Ereignis empfangen

Sie erhalten Ereignisse aus dem Ereignisraster mithilfe eines Endpunkts, der sich auf ein Ereignisabonnement bezieht.

  1. Verfassen Sie den Endpunkt, indem Sie den folgenden Befehl ausführen:

    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. Senden Sie eine Anforderung, um das Ereignis zu nutzen:

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

Bestätigen eines Ereignisses

Nachdem Sie ein Ereignis erhalten haben, übergeben Sie dieses Ereignis an Ihre Anwendung zur Verarbeitung. Nachdem Sie Ihr Ereignis erfolgreich verarbeitet haben, benötigen Sie dieses Ereignis nicht mehr in Ihrem Ereignisabonnement. Um Event Grid anzuweisen, das Ereignis zu löschen, bestätigen Sie es mithilfe seines Sperrtokens, das Sie in der Antwort des Empfangsvorgangs erhalten haben.

  1. Im vorherigen Abschnitt haben Sie eine Antwort erhalten, die ein brokerProperties Objekt mit einer lockToken Eigenschaft enthält. Kopieren Sie den Sperrtokenwert, und legen Sie ihn für eine Umgebungsvariable fest:

    lockToken="<paste-the-lock-token-here>"
    
  2. Erstellen Sie die Payload des Bestätigungsvorgangs, die das Sperrtoken für das Ereignis angibt, das bestätigt werden soll.

    acknowledge_request_payload=' { "lockTokens": ["'$lockToken'"]} '
    
  3. Fahren Sie mit dem Erstellen der Zeichenfolge mit dem Bestätigungsvorgangs-URI fort:

    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. Senden Sie schließlich eine Anforderung, um das empfangene Ereignis zu bestätigen:

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

    Wenn der Bestätigungsvorgang ausgeführt wird, bevor das Sperrtoken abläuft (300 Sekunden wie festgelegt beim Erstellen des Ereignisabonnements), sollte eine Antwort wie im folgenden Beispiel angezeigt werden:

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

Nächster Schritt

Weitere Informationen zum Pull-Übermittlungsmodell finden Sie unter Pull-Übermittlung mit HTTP.