Dokumen ini memberikan informasi tentang penggunaan kontrol konkurensi dengan pesan yang dipublikasikan ke topik.
Kontrol konkurensi membantu Anda mengganti jumlah default thread latar belakang (I/O) yang digunakan oleh library klien untuk memublikasikan pesan. Hal ini memungkinkan klien penayang mengirim pesan secara paralel.
Kontrol konkurensi adalah fitur yang tersedia di library klien Pub/Sub tingkat tinggi. Anda juga dapat menerapkan kontrol konkurensi Anda sendiri saat menggunakan library tingkat rendah.
Dukungan untuk kontrol konkurensi 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 konkurensi dan cara menyiapkan fitur untuk klien penayang Anda. Untuk mengonfigurasi klien pelanggan Anda untuk kontrol konkurensi, lihat Memproses lebih banyak pesan dengan kontrol konkurensi.
Sebelum memulai
Sebelum mengonfigurasi alur kerja publikasi, pastikan Anda telah menyelesaikan tugas berikut:
- Pelajari tentang topik dan alur kerja publikasi.
- Buat topik.
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan guna memublikasikan pesan ke topik, minta administrator untuk memberi Anda peran IAM Pub/Sub Publisher (roles/pubsub.publisher) pada topik Anda.
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 konkurensi dan nama variabel mungkin berbeda di seluruh library klien. Misalnya, di library klien Java, metode untuk mengonfigurasi kontrol konkurensi adalah setExecutorProvider() dan setChannelProvider(). Untuk mengetahui informasi selengkapnya, lihat
dokumen
referensi API.
setExecutorProvider() memungkinkan Anda menyesuaikan penyedia eksekutor yang digunakan untuk memproses respons publikasi. Misalnya, Anda dapat mengubah penyedia eksekutor menjadi penyedia yang menampilkan satu eksekutor bersama 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 mengonfigurasi nilai ini kecuali jika ingin menggunakan saluran yang sama di beberapa klien penayang. Menggunakan kembali saluran di terlalu banyak klien dapat menyebabkan error
GOAWAYatauENHANCE_YOUR_CALM. Jika Anda melihat error ini di log aplikasi atau Log Cloud, buat lebih banyak saluran.
Contoh kode untuk kontrol konkurensi
C++
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.
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 API Go Pub/Sub.
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Java Pub/Sub.
Ruby
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.
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.