Pipeline data terkadang mengalami lonjakan traffic yang dipublikasikan. Lonjakan traffic dapat membebani pelanggan kecuali jika Anda siap menghadapinya. Solusi sederhana untuk menghindari lonjakan traffic adalah dengan meningkatkan resource pelanggan Pub/Sub secara dinamis untuk memproses lebih banyak pesan. Namun, solusi ini dapat menaikkan biaya atau tidak berfungsi secara instan. Misalnya, Anda mungkin memerlukan banyak VM.
Kontrol alur di sisi pelanggan memungkinkan pelanggan mengatur kecepatan penyerapan pesan. Dengan demikian, kontrol alur menangani lonjakan traffic tanpa mendorong biaya atau hingga pelanggan diskalakan.
Kontrol alur adalah fitur yang tersedia di library klien tingkat tinggi Pub/Sub. Anda juga dapat menerapkan pemrograman kontrol alur Anda sendiri saat menggunakan library klien tingkat rendah.
Kebutuhan akan kontrol alur menunjukkan bahwa pesan dipublikasikan dengan kecepatan yang lebih tinggi daripada yang digunakan. Jika skenario ini adalah status persisten, bukan lonjakan sementara dalam volume pesan, pertimbangkan untuk meningkatkan jumlah instance klien pelanggan.
Konfigurasi kontrol alur
Kontrol alur memungkinkan Anda mengonfigurasi jumlah maksimum byte yang dialokasikan untuk permintaan yang tertunda, dan jumlah maksimum pesan yang tertunda yang diizinkan. Tetapkan batas ini sesuai dengan kapasitas throughput mesin klien Anda.
Nilai default untuk variabel kontrol alur dan nama variabel dapat berbeda di seluruh library klien. Misalnya, di library klien Java, variabel berikut mengonfigurasi kontrol alur:
setMaxOutstandingElementCount(). Menentukan jumlah maksimum pesan yang belum dikonfirmasi atau dikonfirmasi negatif oleh Pub/Sub.
setMaxOutstandingRequestBytes(). Menentukan ukuran maksimum pesan yang belum menerima konfirmasi atau konfirmasi negatif dari Pub/Sub.
Jika batas untuk setMaxOutstandingElementCount()
atau
setMaxOutstandingRequestBytes()
terlampaui, klien pelanggan
tidak akan mengambil lebih banyak pesan. Perilaku ini berlanjut hingga pesan
yang sudah diambil dikonfirmasi atau dikonfirmasi secara negatif.
Dengan demikian, kita dapat menyelaraskan throughput dengan biaya yang terkait dengan
menjalankan lebih banyak subscriber.
Contoh kode untuk kontrol alur
Untuk mengontrol kecepatan klien pelanggan menerima pesan, gunakan fitur kontrol alur pelanggan. Fitur kontrol alur ini diilustrasikan dalam contoh berikut:
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.
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.
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js Pub/Sub.
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js Pub/Sub.
Python
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Python API.
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 tentang opsi pengiriman lainnya yang dapat Anda konfigurasikan 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 di-ACK atau menghapus permanen pesan