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 auf einem 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.

gcloud

  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

REST API

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 Cloud-Projekt-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:

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

200 OK

{}

Nächste Schritte