Kontrol serentak adalah fitur yang tersedia di library klien tingkat tinggi Pub/Sub. Anda juga dapat menerapkan kontrol serentak Anda sendiri saat menggunakan library tingkat rendah.
Dukungan untuk kontrol serentak bergantung pada bahasa pemrograman library klien. Untuk penerapan bahasa yang mendukung thread paralel, seperti C++, Go, dan Java, library klien membuat pilihan default untuk jumlah thread.
Pilihan ini mungkin tidak optimal untuk aplikasi Anda. Misalnya, jika aplikasi pelanggan Anda tidak dapat mengimbangi volume pesan masuk dan tidak terikat CPU, Anda harus meningkatkan jumlah thread. Untuk operasi pemrosesan pesan yang intensif CPU, mengurangi jumlah thread mungkin tepat.
Halaman ini menjelaskan konsep kontrol serentak dan cara menyiapkan fitur untuk klien pelanggan Anda. Untuk mengonfigurasi klien penayang Anda untuk kontrol serentak, lihat Kontrol serentak.
Konfigurasi kontrol konkurensi
Nilai default untuk variabel kontrol serentak dan nama variabel mungkin berbeda di seluruh library klien. Untuk mengetahui informasi selengkapnya, lihat
dokumentasi Referensi API.
Misalnya, di library klien Java, metode untuk
mengonfigurasi kontrol serentak adalah setParallelPullCount()
,
setExecutorProvider()
, setSystemExecutorProvider()
, dan
setChannelProvider()
.
setParallelPullCount() memungkinkan Anda memutuskan jumlah streaming yang akan dibuka. Anda dapat membuka lebih banyak aliran jika klien pelanggan Anda dapat menangani lebih banyak data daripada yang dikirim dalam satu aliran, yaitu 10 MBps.
setExecutorProvider() memungkinkan Anda menyesuaikan penyedia eksekutor yang digunakan untuk memproses pesan. Misalnya, Anda dapat mengubah penyedia eksekutor menjadi penyedia yang menampilkan eksekutor bersama tunggal dengan jumlah thread terbatas di beberapa klien subscriber. Konfigurasi ini membantu membatasi jumlah thread yang dibuat. Jumlah total thread yang digunakan untuk kontrol serentak bergantung pada penyedia eksekutor yang diteruskan di library klien dan jumlah penarikan paralel.
setSystemExecutorProvider() memungkinkan Anda menyesuaikan penyedia eksekutor yang digunakan untuk pengelolaan sewa. Biasanya, Anda tidak mengonfigurasi nilai ini kecuali jika Anda ingin menggunakan penyedia eksekutor yang sama di
setExecutorProvider
dansetSystemExecutorProvider
. Misalnya, Anda dapat menggunakan penyedia eksekutor yang sama jika memiliki sejumlah langganan dengan throughput rendah. Menggunakan nilai yang sama akan membatasi jumlah thread di klien.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 channel yang sama di beberapa klien pelanggan. 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
Baca opsi penayangan lainnya yang dapat Anda konfigurasi untuk langganan:
Menangani kegagalan pesan dengan kebijakan percobaan ulang langganan
Meneruskan pesan yang tidak terkirim ke topik yang dihentikan pengirimannya
Memutar ulang pesan yang sebelumnya telah dikonfirmasi atau menghapus permanen pesan