Anda dapat memublikasikan peristiwa CloudEvents langsung ke bus Eventarc Advanced dalam format yang didukung menggunakan Google Cloud CLI atau dengan mengirim permintaan ke Eventarc Publishing REST API. Anda juga dapat menggunakan library klien Eventarc untuk mengakses Eventarc API dari bahasa yang didukung.
Sebelum memulai
Jika belum, aktifkan Eventarc API dan Eventarc Publishing API.
gcloud services enable eventarc.googleapis.com eventarcpublishing.googleapis.com
Publikasikan secara langsung
Pesan peristiwa yang Anda publikasikan secara langsung harus sesuai dengan spesifikasi CloudEvents.
gcloud
Buka terminal.
Anda dapat memublikasikan peristiwa ke bus menggunakan perintah
gcloud beta eventarc message-buses publish
. Contoh: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
Ganti kode berikut:
BUS_NAME
: ID atau ID yang memenuhi syarat sepenuhnya dari bus tempat memublikasikan peristiwa.
Anda hanya boleh menggunakan salah satu opsi berikut:
AVRO_MESSAGE
: pesan peristiwa dalam format Avro sesuai dengan spesifikasi ini.JSON_MESSAGE
: pesan peristiwa dalam format JSON sesuai dengan spesifikasi ini.DATA_PAYLOAD
: data peristiwa yang dipublikasikan.
Jika menggunakan flag
--event-data
, Anda juga harus menggunakan:EVENT_ID
: ID peristiwa. Produser acara harus memastikan bahwasource
+id
bersifat unik untuk setiap acara yang berbeda.EVENT_SOURCE
: sumber peristiwa dari peristiwa yang dipublikasikan.EVENT_TYPE
: jenis peristiwa yang terkait dengan kejadian awal.
Jika menggunakan flag
--event-data
, Anda dapat menggunakan opsi berikut:EVENT_ATTRIBUTE
: atribut peristiwa yang dipublikasikan. Anda dapat mengulangi tanda--event-attributes
untuk menambahkan lebih banyak atribut.Perhatikan bahwa peristiwa dapat mencakup sejumlah atribut CloudEvents kustom tambahan dengan nama yang berbeda (juga dikenal sebagai atribut ekstensi).
Contoh:
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
Untuk memublikasikan peristiwa ke bus, gunakan metode
projects.locations.messageBuses.publish
.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- Nama lengkap resource bus dalam format
projects/PROJECT_ID/locations/LOCATION/messageBuses/BUS_NAME
Ganti kode berikut:
PROJECT_ID
: Google Cloud project ID untuk project bus.LOCATION
: region tempat bus di-deploy—misalnya,us-central1
.BUS_NAME
: nama bus tempat memublikasikan peristiwa.
SPEC_VERSION
: versi spesifikasi CloudEvents yang digunakan peristiwa—misalnya,1.0
.EVENT_TYPE
: jenis peristiwa yang terkait dengan kemunculan awal.EVENT_SOURCE
: sumber peristiwa dari peristiwa yang dipublikasikan.EVENT_ID
: ID peristiwa. Produser harus memastikan bahwasource
+id
bersifat unik untuk setiap acara yang berbeda.CONTENT_TYPE
(opsional): jenis konten nilaidata
. Jika peristiwa format JSON tidak memiliki atributdatacontenttype
, maka diasumsikan bahwa data adalah nilai JSON yang sesuai dengan jenis mediaapplication/json
.DATA_PAYLOAD
(opsional): payload peristiwa yang dienkode ke dalam format media yang ditentukan olehdatacontenttype
dan mematuhidataschema
jika atribut tersebut ada.
Meminta isi JSON:
{ "jsonMessage": "{\"specversion\":\"SPEC_VERSION\", \"type\":\"EVENT_TYPE\", \"source\":\"EVENT_SOURCE\", \"id\":\"EVENT_ID\", \"datacontenttype\":\"CONTENT_TYPE\", \"data\":\"DATA_PAYLOAD\"}" }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Jika berhasil, server akan menampilkan kode status HTTP 200 OK
dan isi respons
kosong dalam format JSON:
200 OK {}
Langkah berikutnya
- Memublikasikan acara dari sumber Google
- Mentransformasi peristiwa yang diterima
- Memformat peristiwa yang diterima