Dokumen ini memberikan informasi tentang penggunaan kontrol serentak dengan pesan yang dipublikasikan ke topik.
Kontrol serentak membantu Anda mengganti jumlah thread latar belakang (I/O) default yang digunakan oleh library klien untuk memublikasikan pesan. Hal ini memungkinkan klien penayang mengirim pesan secara paralel.
Kontrol serentak adalah fitur yang tersedia di library klien tingkat tinggi Pub/Sub. Anda juga dapat menerapkan kontrol serentak sendiri saat menggunakan library tingkat rendah.
Dukungan untuk kontrol serentak bergantung pada bahasa pemrograman library klien. Untuk implementasi bahasa yang mendukung thread paralel, seperti C++, Go, dan Java, library klien membuat pilihan default untuk jumlah thread.
Halaman ini menjelaskan konsep kontrol serentak dan cara menyiapkan fitur untuk klien penayang Anda. Untuk mengonfigurasi klien subscriber Anda untuk kontrol serentak, lihat Memproses lebih banyak pesan dengan kontrol serentak.
Sebelum memulai
Sebelum mengonfigurasi alur kerja publikasi, pastikan Anda telah menyelesaikan tugas berikut:
- Pelajari topik dan alur kerja publikasi.
- Buat topik.
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan guna memublikasikan pesan ke topik, minta administrator Anda untuk memberi Anda peran IAM Pub/Sub Publisher (roles/pubsub.publisher
) di topik.
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Anda memerlukan izin tambahan untuk membuat atau memperbarui topik dan langganan.
Konfigurasi kontrol konkurensi
Nilai default untuk variabel kontrol serentak dan nama variabel mungkin berbeda di seluruh library klien. Misalnya, di library klien Java, metode untuk mengonfigurasi kontrol serentak adalah setExecutorProvider()
dan setChannelProvider()
. Untuk mengetahui informasi selengkapnya, lihat
dokumentasi referensi API.
setExecutorProvider() memungkinkan Anda menyesuaikan penyedia eksekutor yang digunakan untuk memproses respons publikasi. Misalnya, Anda dapat mengubah penyedia eksekutor menjadi penyedia yang menampilkan eksekutor bersama tunggal dengan jumlah thread terbatas di beberapa klien penayang. Konfigurasi ini membantu membatasi jumlah thread yang dibuat.
setChannelProvider() memungkinkan Anda menyesuaikan penyedia saluran yang digunakan untuk membuka koneksi ke Pub/Sub. Biasanya, Anda tidak perlu mengonfigurasi nilai ini kecuali jika Anda ingin menggunakan channel yang sama di beberapa klien penayang. Menggunakan kembali channel di terlalu banyak klien dapat menyebabkan error
GOAWAY
atauENHANCE_YOUR_CALM
. Jika Anda melihat error ini di log aplikasi atau Cloud Logs, buat lebih banyak channel.
Contoh kode untuk kontrol serentak
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.
Go
Contoh berikut menggunakan library klien Go Pub/Sub versi utama (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.
Ruby
Contoh berikut menggunakan library klien Pub/Sub Ruby 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.
Langkah berikutnya
Untuk membatasi lokasi tempat Pub/Sub menyimpan data pesan, lihat Membatasi lokasi resource Pub/Sub.
Untuk mempelajari lebih lanjut cara menerima pesan, lihat Memilih jenis langganan.