Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 23648|Jawab: 0

Batas pemrosesan paralel konsumen RabbitMQ BasicQos

[Salin tautan]
Diposting pada 10/04/2018 22.36.02 | | | |


Pertama-tama, kami memiliki 100 pesan yang belum diproses di server rabbitmq kami, kami membuka klien konsumen secara acak, dan situasi berikut akan muncul,

100 buah data, semuanya didorong dalam sekejap, tetapi kami tidak dapat memproses begitu banyak data secara bersamaan dengan satu klien, apa yang harus kami lakukan?




Seperti yang ditunjukkan pada gambar di atas, kami tidak mengonfirmasi penerimaan pesan! Jika produsen terus mengirimkannya, kami konsumen akan terus menerimanya!

Bayangkan saja, jika, kita konsumen tunggal dapat memproses hingga 60 pesan dalam 1 menit, namun, produsen dapat mengirim 300 pesan dalam 1 menit, jika,Kami memiliki klien konsumen yang perlu menerima 300 pesan secara bersamaan dalam 1 menit, yang telah melebihi beban maksimum kami, yang dapat menyebabkan sumber daya server habis dan klien konsumen macet
RabbitMQ menyediakan fitur qoS (Quality of Service), yaitu, di bawah premis konfirmasi pesan non-otomatis, jika sejumlah pesan (dengan mengatur nilai Qos berdasarkan konsumsi atau saluran) tidak dikonfirmasi, pesan baru tidak akan dikonsumsi.



prefetchUkuran:0
prefetchCount: Memberi tahu RabbitMQ untuk tidak mendorong lebih dari N pesan ke konsumen pada saat yang sama, yaitu setelah ada N pesan yang belum diterima, konsumen akan memblokir sampai ada pesan ack
global:true\false Apakah pengaturan di atas diterapkan ke saluran, sederhananya, apakah pembatasan di atas berada di tingkat saluran atau di tingkat konsumen
Catatan: Dikatakan bahwa prefetchSize dan global tidak diimplementasikan oleh rabbitmq, jadi saya tidak akan mempelajarinya untuk saat ini


prefetch_count berlaku ketika no_ask=falseArtinya, dalam kasus jawaban otomatis, kedua nilai ini adalahTidak berlakudari

Atur prefetchCount = 3 melalui metode BasicQos. Hal ini memungkinkan RabbitMQ untuk memproses hingga 3 pesan per konsumen secara bersamaan. Dengan kata lain, ia tidak akan mendistribusikan Pesan baru kepada konsumen sampai menerima ack. Berikut cara mengaturnya:





Seperti yang Anda lihat pada gambar, ada dua konsumen yang mendengarkan Queue secara bersamaan, tetapi perhatikan bahwa pesan di sini hanya akan diterima secara otomatis jika dikonsumsi oleh satu konsumen, dan konsumen lainnya tidak akan mendapatkan pesan ini lagi.

Pengenalan situs web resmi: http://www.rabbitmq.com/consumer-prefetch.html

Perhatikan bahwa metode ini dapat menyebabkan antrean penuh. Tentu saja, Anda mungkin perlu menambahkan lebih banyak Konsumen atau membuat lebih banyak virtualHost untuk menyempurnakan desain Anda.





Mantan:EF mengimplementasikan penyisipan, pembaruan, dan penghapusan database massal
Depan:Server web IIS Express tidak dapat dimulai
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com