Topik dapat menggunakan skema untuk menentukan format yang harus diikuti oleh pesannya. Saat berlangganan ke topik dengan skema, pesan yang dikirim ke pelanggan dijamin merupakan pesan yang valid. Pesan ini sesuai dengan jenis dan encoding yang ditentukan dalam setelan skema yang terkait dengan topik.
Pelanggan dapat menentukan setelan skema yang terkait dengan topik dengan melihat atribut berikut:
googclient_schemaname: Nama skema yang digunakan untuk validasi. Jika skema dihapus, namanya adalah_deleted-schema_.googclient_schemaencoding: Encoding pesan, baik JSON maupun BINARY.googclient_schemarevisionid: ID revisi skema yang digunakan untuk mengurai dan memvalidasi pesan. Setiap revisi memiliki ID revisi unik yang terkait dengannya. ID revisi adalah UUID delapan karakter yang dibuat secara otomatis. Jika revisi dihapus, ID-nya adalah_deleted-schema-revision_.
Untuk mempelajari skema lebih lanjut, lihat Ringkasan skema.
Contoh kode untuk berlangganan topik yang terkait dengan skema
Contoh ini menunjukkan cara memproses pesan saat berlangganan ke topik yang dikonfigurasi dengan skema.
C++
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan C++ di Panduan memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub C++ API.
Avro ProtoC#
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan C# di Panduan memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API C# Pub/Sub.
Avro ProtoGo
Contoh berikut menggunakan versi utama library klien Go Pub/Sub (v2). Jika Anda masih menggunakan library v1, lihat panduan migrasi ke v2. Untuk melihat daftar contoh kode v1, lihat contoh kode yang tidak digunakan lagi.
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Go API.
Avro ProtoJava
Contoh berikut menggunakan versi utama library klien Go Pub/Sub (v2). Jika Anda masih menggunakan library v1, lihat panduan migrasi ke v2. Untuk melihat daftar contoh kode v1, lihat contoh kode yang tidak digunakan lagi.
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Go API.
Avro Buffering ProtokolNode.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js Pub/Sub.
Avro Buffering ProtokolNode.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js Pub/Sub.
Avro Buffering ProtokolPHP
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan PHP di Panduan memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub PHP API.
Avro Buffering ProtokolPython
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Python API.
Avro Buffering ProtokolRuby
Contoh berikut menggunakan library klien Ruby Pub/Sub v3. Jika Anda masih menggunakan library v2, lihat panduan migrasi ke v3. Untuk melihat daftar contoh kode Ruby v2, lihat contoh kode yang tidak digunakan lagi.
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Ruby di Panduan memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Ruby Pub/Sub.
Avro Buffering ProtokolBerlangganan topik yang terkait dengan skema Avro dengan revisi
Avro mengharuskan pesan diuraikan menggunakan skema yang digunakan untuk mengenkode pesan tersebut. Anda juga dapat menerjemahkan pesan ke skema lain dengan menggunakan resolusi skema Avro.
Pub/Sub memastikan bahwa semua revisi skema kompatibel ke depan dan ke belakang dengan semua revisi lainnya. Kompatibilitas ini memungkinkan revisi apa pun digunakan sebagai skema pembaca atau penulis.
Saat mengurai pesan yang dienkode dengan revisi skema yang berbeda dengan yang digunakan pelanggan Anda, Anda mungkin perlu mendapatkan skema asli dan meneruskannya sebagai skema penulis.
Sebaiknya cache objek pembaca Avro yang dapat mengurai pesan untuk
setiap revisi skema yang ditemui untuk meminimalkan latensi
dan meminimalkan jumlah panggilan ke GetSchema API.
Kode berikut menunjukkan fungsi ini:
Baca atribut yang dibahas di bagian sebelumnya untuk menentukan revisi skema mana yang digunakan untuk mengenkode pesan.
Ambil revisi skema dan simpan dalam cache pembaca yang dibuat dengannya.
Mengurai pesan ke dalam skema yang digunakan pelanggan Anda.
Go
Contoh berikut menggunakan versi utama library klien Go Pub/Sub (v2). Jika Anda masih menggunakan library v1, lihat panduan migrasi ke v2. Untuk melihat daftar contoh kode v1, lihat contoh kode yang tidak digunakan lagi.
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Go API.
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Java API.
Python
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Python API.
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk memvalidasi pesan terhadap skema, selesaikan salah satu langkah berikut:
- Berikan salah satu peran standar berikut kepada akun layanan:
roles/pubsub.admin,roles/pubsub.editor, atauroles/pubsub.viewer. Buat peran kustom untuk akun layanan dan tambahkan izin
pubsub.schemas.validatedanpubsub.schemas.getberikut.Untuk mempelajari lebih lanjut peran khusus, lihat Membuat dan mengelola peran IAM Kustom.