Memublikasikan peristiwa secara langsung

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.

Pesan harus sesuai dengan spesifikasi CloudEvents.

gcloud

  1. Buka terminal.

  2. 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
    Atau:
    gcloud beta eventarc message-buses publish BUS_NAME \
        --json-message=JSON_MESSAGE
    Atau:
    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 sepenuhnya memenuhi syarat dari bus tempat peristiwa dipublikasikan.

    Anda hanya boleh menggunakan satu dari hal 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 hal berikut:

    • EVENT_ID: ID peristiwa. Produsen peristiwa harus memastikan bahwa source + id bersifat unik untuk setiap peristiwa yang berbeda.
    • EVENT_SOURCE: sumber peristiwa dari peristiwa yang dipublikasikan.
    • EVENT_TYPE: jenis peristiwa yang terkait dengan kejadian asal.

    Jika menggunakan flag --event-data, Anda dapat menggunakan hal berikut secara opsional:

    • EVENT_ATTRIBUTE: atribut peristiwa yang dipublikasikan. Anda dapat mengulangi flag --event-attributes untuk menambahkan lebih banyak atribut.

      Perhatikan bahwa peristiwa dapat menyertakan sejumlah atribut CloudEvents kustom tambahan dengan nama yang berbeda (juga dikenal sebagai atribut ekstensi).

Contoh:

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

Untuk memublikasikan peristiwa ke bus, gunakan metode projects.locations.messageBuses.publish.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • Nama resource lengkap bus dalam format projects/PROJECT_ID/locations/LOCATION/messageBuses/BUS_NAME

    Ganti kode berikut:

    • PROJECT_ID: project ID Google Cloud untuk project bus.
    • LOCATION: region tempat bus di-deploy—misalnya, us-central1.
    • BUS_NAME: nama bus tempat peristiwa akan dipublikasikan.
  • SPEC_VERSION: versi spesifikasi CloudEvents yang digunakan peristiwa—misalnya, 1.0.
  • EVENT_TYPE: jenis peristiwa yang terkait dengan kemunculan asal.
  • EVENT_SOURCE: sumber peristiwa dari peristiwa yang dipublikasikan.
  • EVENT_ID: ID peristiwa. Produsen harus memastikan bahwa source + id bersifat unik untuk setiap peristiwa yang berbeda.
  • CONTENT_TYPE (opsional): jenis konten nilai data. Jika peristiwa format JSON tidak memiliki atribut datacontenttype, data tersebut dianggap sebagai nilai JSON yang sesuai dengan jenis media application/json.
  • DATA_PAYLOAD (opsional): payload peristiwa yang dienkode ke dalam format media yang ditentukan oleh datacontenttype dan mematuhi dataschema 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