Sie können ein CloudEvents-Ereignis mit der Google Cloud CLI oder durch Senden einer Anfrage an die Eventarc Publishing REST API in einem unterstützten Format direkt in 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.
Hinweise
Aktivieren Sie die Eventarc API und die Eventarc Publishing API, falls Sie dies noch nicht getan haben.
gcloud services enable eventarc.googleapis.com eventarcpublishing.googleapis.com
Direkt veröffentlichen
Die Ereignisnachricht, die Sie direkt veröffentlichen, muss der CloudEvents-Spezifikation entsprechen.
gcloud
Öffnen Sie ein Terminalfenster.
Sie können Ereignisse in einem Bus mit dem Befehl
gcloud beta eventarc message-buses publish
veröffentlichen. Beispiel:gcloud beta eventarc message-buses publish BUS_NAME \ --avro-message=AVRO_MESSAGE
gcloud beta eventarc message-buses publish BUS_NAME \ --json-message=JSON_MESSAGE
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, in dem das Ereignis veröffentlicht werden soll.
Sie dürfen nur eine der folgenden Optionen verwenden:
AVRO_MESSAGE
: Die Ereignismeldung 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 Ereigniskennung. Ereignisproduzenten müssen dafür sorgen, dasssource
+id
für jedes einzelne Ereignis eindeutig ist.EVENT_SOURCE
: Die Ereignisquelle eines veröffentlichten Ereignisses.EVENT_TYPE
: Der Ereignistyp, der sich auf das ursprüngliche Ereignis bezieht.
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 (auch als Erweiterungsattribute bezeichnet) enthalten.
Beispiele:
gcloud beta eventarc message-buses publish my-bus \ --event-data='{"key": "hello-world-data"}' \ --event-id=hello-world-id-1234 \ --event-source=hello-world-source \ --event-type=hello-world-type \ --event-attributes="datacontenttype=application/json"
gcloud beta eventarc message-buses publish my-bus --json-message='{ "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"} }'
REST API
Verwenden Sie zum Veröffentlichen eines Ereignisses in einem Bus die Methode projects.locations.messageBuses.publish
.
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 Bus-Projekt.LOCATION
: die Region, in der der Bus bereitgestellt wird, z. B.us-central1
.BUS_NAME
: Der Name des Busses, an den das Ereignis gesendet 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 Ereigniskennung. Feedersteller müssen dafür sorgen, dasssource
+id
für jedes einzelne Event eindeutig ist.CONTENT_TYPE
(optional): Der Inhaltstyp desdata
-Werts. Wenn ein Ereignis im JSON-Format keindatacontenttype
-Attribut hat, wird davon ausgegangen, dass die Daten ein JSON-Wert sind, der dem Medientypapplication/json
entspricht.DATA_PAYLOAD
(optional): Die Ereignisnutzlast, die in das durchdatacontenttype
angegebene Media-Format codiert ist unddataschema
entspricht, wenn 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
- Ereignisse aus Google-Quellen veröffentlichen
- Empfangene Ereignisse transformieren
- Empfangene Ereignisse formatieren