Kontrol konkurensi adalah fitur yang tersedia di library klien tingkat tinggi Pub/Sub. Anda juga dapat menerapkan kontrol serentak sendiri saat menggunakan library level 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.
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 menggunakan CPU secara intensif, mengurangi jumlah thread mungkin sesuai.
Konfigurasi kontrol serentak
Nilai default untuk variabel kontrol konkurensi dan nama variabel dapat berbeda di berbagai library klien. Misalnya, dalam library klien Java, metode untuk mengonfigurasi kontrol serentak adalah setSystemExecutorProvider()
, setExecutorProvider()
, dan setParallelPullCount()
.
setParallelPullCount() memungkinkan Anda menentukan jumlah streaming yang akan dibuka. Anda dapat membuka lebih banyak streaming jika klien pelanggan Anda dapat menangani lebih banyak data daripada yang dikirim pada satu streaming dengan kecepatan 10 MBps.
setExecutorProvider() memungkinkan Anda menyesuaikan penyedia eksekutor yang digunakan untuk memproses pesan. Misalnya, Anda dapat mengubah penyedia eksekutor menjadi penyedia yang menampilkan satu eksekutor bersama dengan jumlah thread terbatas di beberapa klien pelanggan. Konfigurasi ini membantu membatasi jumlah thread yang dibuat.
setSystemExecutorProvider() memungkinkan Anda menyesuaikan penyedia eksekutor yang digunakan untuk pengelolaan sewa. Biasanya, Anda tidak mengonfigurasi nilai ini kecuali 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.
Jumlah total thread yang digunakan untuk kontrol serentak bergantung pada penyedia eksekutor yang diteruskan dalam library klien dan jumlah pull paralel.
Contoh kode untuk kontrol konkurensi
C++
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan C++ di Panduan Memulai: Menggunakan Library Klien. Untuk 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 informasi selengkapnya, lihat dokumentasi referensi API Pub/Sub Java.
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
Baca opsi pengiriman lainnya yang dapat Anda konfigurasi untuk langganan:
Menangani kegagalan pesan dengan kebijakan percobaan ulang langganan
Meneruskan pesan yang belum terkirim ke topik yang dihentikan pengirimannya
Memutar ulang pesan yang sebelumnya dikonfirmasi atau menghapus permanen pesan