Ereignisse direkt veröffentlichen

Sie können ein CloudEvents-Ereignis mit der Google Cloud CLI oder durch Senden einer Anfrage an die Eventarc Publishing REST API direkt in einem unterstützten Format an einen Eventarc Advanced-Bus veröffentlichen. Sie können auch die Eventarc-Clientbibliotheken verwenden, um in einer unterstützten Sprache auf die Eventarc APIs zuzugreifen.

Die Nachricht muss der CloudEvents-Spezifikation entsprechen.

  1. Öffnen Sie ein Terminalfenster.

  2. Sie können Ereignisse mit dem Befehl gcloud beta eventarc message-buses publish auf einem Bus veröffentlichen. Beispiel:

    gcloud beta eventarc message-buses publish BUS_NAME \
        --avro-message=AVRO_MESSAGE
    oder:
    gcloud beta eventarc message-buses publish BUS_NAME \
        --json-message=JSON_MESSAGE
    oder:
    gcloud beta eventarc message-buses publish BUS_NAME \
        --event-data=DATA_PAYLOAD \
        --event-id=EVENT_ID \
        --event-source=EVENT_SOURCE \
        --event-type=EVENT_TYPE \
        --event-attributes=EVENT_ATTRIBUTE

    Ersetzen Sie Folgendes:

    • BUS_NAME: die ID oder voll qualifizierte Kennzeichnung des Busses, auf dem das Ereignis veröffentlicht werden soll.

    Sie dürfen nur eine der folgenden Optionen verwenden:

    • AVRO_MESSAGE: Die Ereignisnachricht im Avro-Format gemäß dieser Spezifikation.
    • JSON_MESSAGE: die Ereignisnachricht im JSON-Format gemäß dieser Spezifikation.
    • DATA_PAYLOAD: die Daten eines veröffentlichten Ereignisses.

    Wenn Sie das Flag --event-data verwenden, müssen Sie auch Folgendes verwenden:

    • EVENT_ID: die Ereignis-ID. Die Ereignis-Produzenten müssen dafür sorgen, dass source + id für jedes einzelne Ereignis eindeutig ist.
    • EVENT_SOURCE: Die Ereignisquelle eines veröffentlichten Ereignisses.
    • EVENT_TYPE: Die Art des Ereignisses, das mit dem ursprünglichen Ereignis zusammenhängt.

    Wenn Sie das Flag --event-data verwenden, können Sie optional Folgendes verwenden:

    • EVENT_ATTRIBUTE: die Attribute eines veröffentlichten Ereignisses. Sie können das Flag --event-attributes wiederholen, um weitere Attribute hinzuzufügen.

      Ereignisse können beliebig viele zusätzliche benutzerdefinierte CloudEvents-Attribute mit unterschiedlichen Namen enthalten (auch Erweiterungsattribute genannt).

Beispiele:

gcloud beta eventarc message-buses publish my-bus \
    --event-id=1234 \
    --event-type=event-provider.event.v1.eventType \
    --event-source="//event-provider/event/source" \
    --event-data='{"key": "value"}' \
    --event-attributes=attribute1=value

gcloud beta eventarc message-buses publish my-bus --json-message @- << EOF
{
    "specversion" : "1.0",
    "type" : "com.example.someevent",
    "source" : "google.cloud.storage.object.v1.finalized",
    "id" : "A234-1234-1234",
    "time" : "2024-04-05T17:31:00Z",
    "bucket" : "bucketName",
    "datacontenttype" : "application/json",
    "data":{"key": "value"}
}
EOF

Verwenden Sie die Methode projects.locations.messageBuses.publish, um ein Ereignis auf einem Bus zu veröffentlichen.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • Der vollständige Ressourcenname des Busses im Format projects/PROJECT_ID/locations/LOCATION/messageBuses/BUS_NAME

    Ersetzen Sie Folgendes:

    • PROJECT_ID: die Google CloudProjekt-ID für das Busprojekt.
    • LOCATION: die Region, in der der Bus bereitgestellt wird, z. B. us-central1.
    • BUS_NAME: Der Name des Busses, auf dem das Ereignis veröffentlicht werden soll.
  • SPEC_VERSION: die Version der CloudEvents-Spezifikation, die für das Ereignis verwendet wird, z. B. 1.0.
  • EVENT_TYPE: der Ereignistyp, der sich auf das ursprüngliche Ereignis bezieht.
  • EVENT_SOURCE: die Ereignisquelle eines veröffentlichten Ereignisses.
  • EVENT_ID: die Ereignis-ID. Feedersteller müssen dafür sorgen, dass source + id für jedes einzelne Ereignis eindeutig ist.
  • CONTENT_TYPE (optional): Der Inhaltstyp des data-Werts. Wenn ein Ereignis im JSON-Format kein datacontenttype-Attribut hat, wird davon ausgegangen, dass es sich bei den Daten um einen JSON-Wert handelt, der dem Medientyp application/json entspricht.
  • DATA_PAYLOAD (optional): die Ereignisnutzlast, die in das von datacontenttype angegebene Medienformat codiert ist und dataschema entspricht, sofern diese Attribute vorhanden sind.

JSON-Text der Anfrage:

{
"jsonMessage":
  "{\"specversion\":\"SPEC_VERSION\",
  \"type\":\"EVENT_TYPE\",
  \"source\":\"EVENT_SOURCE\",
  \"id\":\"EVENT_ID\",
  \"datacontenttype\":\"CONTENT_TYPE\",
  \"data\":\"DATA_PAYLOAD\"}"
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

cat > request.json << 'EOF'
{
"jsonMessage":
  "{\"specversion\":\"SPEC_VERSION\",
  \"type\":\"EVENT_TYPE\",
  \"source\":\"EVENT_SOURCE\",
  \"id\":\"EVENT_ID\",
  \"datacontenttype\":\"CONTENT_TYPE\",
  \"data\":\"DATA_PAYLOAD\"}"
}
EOF

Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://eventarcpublishing.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/messageBuses/BUS_NAME:publish"

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

@'
{
"jsonMessage":
  "{\"specversion\":\"SPEC_VERSION\",
  \"type\":\"EVENT_TYPE\",
  \"source\":\"EVENT_SOURCE\",
  \"id\":\"EVENT_ID\",
  \"datacontenttype\":\"CONTENT_TYPE\",
  \"data\":\"DATA_PAYLOAD\"}"
}
'@  | Out-File -FilePath request.json -Encoding utf8

Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://eventarcpublishing.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/messageBuses/BUS_NAME:publish" | Select-Object -Expand Content

Kopieren Sie den Anfragetext und öffnen Sie die Referenzseite für Methoden. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Fügen Sie den Anfragetext in dieses Tool ein, füllen Sie alle Pflichtfelder aus und klicken Sie auf Ausführen.

Bei Erfolg gibt der Server den HTTP-Statuscode 200 OK und den leeren Antworttext im JSON-Format zurück:

200 OK

{}

Nächste Schritte