|
|
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=false,Artinya, 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 massalDepan:Server web IIS Express tidak dapat dimulai
|