Pipeline data terkadang mengalami lonjakan traffic yang dipublikasikan. Lonjakan traffic dapat membebani pelanggan kecuali Anda sudah 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 meningkatkan 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 menaikkan biaya atau hingga pelanggan di-scale up.
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 pada kecepatan yang lebih tinggi daripada yang digunakan. Jika skenario ini merupakan status persisten, bukan lonjakan volume pesan sementara, pertimbangkan untuk meningkatkan jumlah instance klien subscriber.
Konfigurasi kontrol alur
Kontrol alur memungkinkan Anda mengonfigurasi jumlah maksimum byte yang dialokasikan untuk permintaan yang belum selesai, dan jumlah maksimum pesan yang belum selesai yang diizinkan. Tetapkan batas ini sesuai dengan kapasitas throughput mesin klien Anda.
Nilai default untuk variabel kontrol alur dan nama variabel mungkin berbeda di seluruh library klien. Misalnya, di library klien Java, variabel berikut mengonfigurasi kontrol alur:
setMaxOutstandingElementCount(). Menentukan jumlah maksimum pesan yang belum menerima konfirmasi atau konfirmasi negatif dari 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 subscriber
tidak akan menarik lebih banyak pesan. Perilaku ini berlanjut hingga pesan yang sudah ditarik diakui atau tidak diakui.
Dengan demikian, kita dapat menyelaraskan throughput dengan biaya yang terkait dengan menjalankan lebih banyak pelanggan.
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 API C# Pub/Sub.
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.
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
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