2013-10-03 26 views
15

RabbitMQ'yi başarılı bir şekilde kullanıyorum. Bununla birlikte, kuyrukta çok sayıda mesajın olduğu bir durumda, tüketicinin (bir Windows servisi) hepsini almayı denediğinde ve sadece onlara bağlı kalmaya çalıştığı, ancak bunları hiçbir zaman eylemde bulunmadığı veya kabul etmediği bir sorunum var. RabbitMQ Tüketici gaz nasıl yapılır

hazır durumda ileti sayısı düşüktür

sonra tüketicilerin bir sorun olmuştur ve bir birikim o kadar çok açgözlü alır sonra orada sadece eğer, verimi cezası ile anlaşma.

tüketici denemek ve herhangi bir anda sorumluluğunu alacak maksimum mesaj sayısını yapılandırmak için bir yolu var mı?

Ben RabbitMQ.Client.ConnectionFactory üzerinde RequestedChannelMax alan doğru ayarı bu sınırlamak olmasıdır görebilir?

Teşekkür

+0

İlgili: http://stackoverflow.com/questions/29841690/how-to-consume-one-message – Nav

cevap

21

Bir tüketici, bant genişliği tüketici tarafından bakılmaksızın gerçek mesaj işlem süresi işleyebilir kadar çok mesaj okuyacaktır varsayılan olarak.

Hizmet'in Kalitesini o tek seferde almaya çalışacağız kaç ileti kısıtlamak için kanalın (QoS) değiştirerek önceden getirme değerlerini ayarlamak gerekir. Basic.qos here'a bakın. 3 parametresi, bir boyutu (oktetlerde), bir sayımı (bir seferde alacağı tüm mesajların sayısı) ve küresel bir bayrağı vardır. Verimliliği optimize etmekle ilgilendiğiniz ve sayfanın yaklaşık 2/3'ünü ön yükleme ile ilgili görüşmeler yapmak isterseniz This blog post ilginç bir okumadır.

Bu yardımcı olur umarım!

+1

Bu sayede çok kapsamlı cevaptır ve sağ ne gerekli bana. '_model.BasicQos (0,100, yanlış); ' – baynezy