Dokumen ini memberikan informasi tentang penggunaan kontrol serentak 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 tingkat tinggi Pub/Sub. Anda juga dapat menerapkan kontrol konkurensi Anda 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 pelanggan Anda untuk kontrol serentak, lihat Memproses lebih banyak pesan dengan kontrol serentak.
Sebelum memulai
Sebelum mengonfigurasi alur kerja publikasi, pastikan Anda telah menyelesaikan tugas-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 untuk memberi Anda
peran IAM Pub/Sub Publisher (roles/pubsub.publisher
) pada 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 konkurensi adalah
setExecutorProvider()
dan setChannelProvider()
. Untuk 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 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 Anda ingin menggunakan saluran yang sama di beberapa klien penayang. Menggunakan kembali saluran di terlalu banyak klien dapat mengakibatkan error
GOAWAY
atauENHANCE_YOUR_CALM
. Jika Anda melihat error ini di log aplikasi atau Cloud Logging, buat lebih banyak saluran.
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
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 Java API Pub/Sub.
Ruby
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Ruby di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Ruby API.
Langkah selanjutnya
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.