Pipeline menghubungkan bus ke tujuan target, dan merutekan pesan peristiwa ke tujuan tersebut. Anda dapat mengonfigurasi pipeline untuk mengharapkan data peristiwa dalam format tertentu atau, sebelum peristiwa dikirim ke tujuan, Anda dapat mengonversi data peristiwa dari satu format yang didukung ke format lainnya. Misalnya, Anda mungkin perlu merutekan peristiwa ke endpoint yang hanya menerima data Avro.
Format yang didukung
Konversi format berikut didukung:
- Avro ke JSON
- Avro ke Protobuf
- JSON ke Avro
- JSON ke Protobuf
- Protobuf ke Avro
- Protobuf ke JSON
Perhatikan hal berikut:
Saat Anda mengonversi format peristiwa, hanya payload peristiwa yang dikonversi, bukan seluruh pesan peristiwa.
Jika format data masuk ditentukan untuk pipeline, semua peristiwa harus cocok dengan format tersebut. Setiap peristiwa yang tidak cocok dengan format yang diharapkan akan diperlakukan sebagai error persisten.
Jika format data masuk tidak ditentukan untuk pipeline, format keluar tidak dapat ditetapkan.
Sebelum format peristiwa dikonversi untuk tujuan tertentu, semua transformasi data yang dikonfigurasi akan diterapkan terlebih dahulu.
Peristiwa selalu dikirim dalam format CloudEvents menggunakan permintaan HTTP dalam mode konten biner, kecuali jika Anda menentukan binding pesan.
Skema JSON terdeteksi secara dinamis. Untuk definisi skema Protobuf, Anda hanya dapat menentukan satu jenis tingkat teratas dan pernyataan impor yang merujuk ke jenis lain tidak didukung. Definisi skema tanpa ID
syntax
secara default ditetapkan keproto2
. Perhatikan bahwa ada batas ukuran skema.
Mengonfigurasi pipeline untuk memformat peristiwa
Anda dapat mengonfigurasi pipeline untuk mengharapkan data peristiwa dalam format tertentu, atau untuk mengonversi data peristiwa dari satu format ke format lainnya, di Konsol Google Cloud atau menggunakan gcloud CLI.
Konsol
Di konsol Google Cloud, buka halaman Eventarc > Pipelines.
Anda dapat membuat pipeline atau, jika Anda mengupdate pipeline, klik nama pipeline.
Perhatikan bahwa mengupdate pipeline mungkin memerlukan waktu lebih dari 10 menit.
Di halaman Detail pipeline, klik
Edit.Di panel Mediasi peristiwa, lakukan hal berikut:
- Centang kotak Terapkan transformasi.
Dalam daftar Format masuk, pilih format yang berlaku.
Perhatikan bahwa jika format data masuk ditentukan untuk pipeline, semua peristiwa harus cocok dengan format tersebut. Setiap peristiwa yang tidak cocok dengan format yang diharapkan akan diperlakukan sebagai error persisten.
Untuk format Avro atau Protobuf, Anda harus menentukan skema masuk. (Secara opsional, Anda dapat mengupload skema inbound, bukan menentukannya secara langsung.)
Di kolom ekspresi CEL, tulis ekspresi transformasi menggunakan CEL.
Klik Lanjutkan.
Di panel Destination, lakukan hal berikut:
Jika berlaku, pilih format dalam daftar Format keluar.
Perhatikan bahwa jika format data masuk tidak ditentukan untuk pipeline, format keluar tidak dapat ditetapkan.
Opsional: Terapkan Penautan pesan. Untuk informasi selengkapnya, lihat Penautan pesan.
Klik Simpan.
gcloud
Buka terminal.
Anda dapat membuat pipeline atau memperbarui pipeline menggunakan perintah
gcloud beta eventarc pipelines update
:Perhatikan bahwa mengupdate pipeline mungkin memerlukan waktu lebih dari 10 menit.
gcloud beta eventarc pipelines update PIPELINE_NAME \ --location=REGION \ --INPUT_PAYLOAD_FLAG \ --destinations=OUTPUT_PAYLOAD_KEY
Ganti kode berikut:
PIPELINE_NAME
: ID pipeline atau nama yang sepenuhnya memenuhi syaratREGION
: Lokasi Eventarc Advanced yang didukungAtau, Anda dapat menetapkan properti lokasi gcloud CLI:
gcloud config set eventarc/location REGION
INPUT_PAYLOAD_FLAG
: flag format data input yang dapat berupa salah satu dari berikut:--input-payload-format-avro-schema-definition
--input-payload-format-json
--input-payload-format-protobuf-schema-definition
Perhatikan bahwa jika format data input ditentukan untuk pipeline, semua peristiwa harus cocok dengan format tersebut. Setiap peristiwa yang tidak cocok dengan format yang diharapkan akan diperlakukan sebagai error persisten.
OUTPUT_PAYLOAD_KEY
: kunci format data output yang dapat berupa salah satu dari berikut:output_payload_format_avro_schema_definition
output_payload_format_json
output_payload_format_protobuf_schema_definition
Perhatikan bahwa jika menetapkan kunci format data output, Anda juga harus menentukan tanda format data input.
Contoh:
Contoh berikut menggunakan tanda
--input-payload-format-protobuf-schema-definition
untuk menentukan bahwa pipeline harus mengharapkan peristiwa dalam format data Protobuf dengan skema tertentu:gcloud beta eventarc pipelines update my-pipeline \ --input-payload-format-protobuf-schema-definition \ ' syntax = "proto3"; message schema { string name = 1; string severity = 2; } '
Contoh berikut menggunakan kunci
output_payload_format_avro_schema_definition
dan tanda--input-payload-format-avro-schema-definition
untuk membuat pipeline yang mengharapkan peristiwa dalam format Avro dan menampilkannya dalam format yang sama:gcloud beta eventarc pipelines create my-pipeline \ --location=us-central1 \ --destinations=http_endpoint_uri='https://example-endpoint.com',output_payload_format_avro_schema_definition='{"type": "record", "name": "my_record", "fields": [{"name": "my_field", "type": "string"}]}' \ --input-payload-format-avro-schema-definition='{"type": "record", "name": "my_record", "fields": [{"name": "my_field", "type": "string"}]}'
Contoh berikut menggunakan kunci
output_payload_format_protobuf_schema_definition
dan tanda--input-payload-format-avro-schema-definition
untuk mengupdate pipeline dan mengonversi data peristiwanya dari Avro ke Protobuf menggunakan definisi skema:gcloud beta eventarc pipelines update my-pipeline \ --location=us-central1 \ --destinations=output_payload_format_protobuf_schema_definition='message MessageProto {string prop1 = 1; string prop2 = 2;}' \ --input-payload-format-avro-schema-definition= \ ' { "type": "record", "name": "MessageProto", "fields": [ { "name" : "prop1", "type": "string" }, { "name" : "prop2", "type": "string" }, ] } '