Pipeline data terkadang mengalami lonjakan traffic yang dipublikasikan. Lonjakan lalu lintas dapat membanjiri pelanggan kecuali 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 mungkin meningkatkan biaya atau tidak berfungsi secara instan. Misalnya, Anda mungkin memerlukan banyak VM.
Dengan kontrol alur di sisi pelanggan, pelanggan dapat mengatur kecepatan proses penyerapan pesan. Dengan demikian, kontrol alur menangani lonjakan traffic tanpa meningkatkan biaya atau sampai skala pelanggan ditingkatkan.
Kontrol alur adalah fitur yang tersedia di library klien level tinggi Pub/Sub. Anda juga dapat menerapkan pemrograman kontrol alur sendiri saat menggunakan library klien level rendah.
Kebutuhan akan kontrol alur menunjukkan bahwa pesan dipublikasikan dengan kecepatan yang lebih tinggi daripada pemakaiannya. Jika skenario ini terjadi secara persisten, bukan lonjakan sementara dalam volume pesan, sebaiknya tingkatkan jumlah instance klien pelanggan.
Konfigurasi kontrol alur
Kontrol alur memungkinkan Anda mengonfigurasi jumlah maksimum byte yang dialokasikan untuk permintaan yang belum terselesaikan, dan jumlah maksimum pesan beredar yang diizinkan. Tetapkan batas ini sesuai dengan kapasitas throughput mesin klien Anda.
Nilai default untuk variabel kontrol alur dan nama variabel dapat berbeda di setiap library klien. Misalnya, dalam library klien Java, variabel berikut mengonfigurasi kontrol alur:
setMaxOutstandingElementCount(). Menentukan jumlah maksimum pesan yang mana Pub/Sub belum menerima konfirmasi atau konfirmasi negatif.
setMaxOutstandingRequestBytes(). Menentukan ukuran maksimum pesan yang mana Pub/Sub belum menerima konfirmasi atau konfirmasi negatif.
Jika batas untuk setMaxOutstandingElementCount()
atau setMaxOutstandingRequestBytes()
terlampaui, klien pelanggan tidak akan menarik lebih banyak pesan. Perilaku ini berlanjut sampai pesan
yang telah ditarik dikonfirmasi atau diakui secara negatif.
Dengan demikian, kami dapat menyelaraskan throughput dengan biaya yang terkait dengan menjalankan lebih banyak pelanggan.
Contoh kode untuk kontrol alur
Untuk mengontrol tingkat pengiriman pesan oleh klien pelanggan, 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 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 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.
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan Memulai: Menggunakan Library Klien. Untuk informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Node.js API.
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan Memulai: Menggunakan Library Klien. Untuk informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Node.js API.
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 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