2017-02-20 6 views
0

私はRabbitMQのキューからメッセージを排出するために私のC#のコンソールアプリケーションで、次の上書きコードを持っている:RabbitMQキューに複数のサブスクライバを割り当てることはできますか?

consumer = new EventingBasicConsumer(_channel); 
consumer.Received += (o, e) => 
{ 
    //onMessageReceived() 
}; 


consumer.Shutdown += (oo, oe) => 
{ 
    //Handle Subscribe event 
}; 
_channel.BasicConsume(QueueName, false ,consumer); 

私は、複数の加入者の状況をシミュレートするために実行している、このコンソールアプリケーションの2つのインスタンスを持っています。私は常に最初の加入者にメッセージを送り、もう1つは常にアイドルです。 RabbitMQキューの同じキューに複数のサブスクライバを持つことはできますか?

+1

あなたは、1人の消費者が扱うことができるより多くのメッセージを送信しようとしたことがありますか?キューをいっぱいにして後で加入者を開始し、加入者に何が起きているのかを確認してください。 RabbitMQでは、1つのキューに対して複数のサブスクライバを持つことができます。 – Johansson

答えて

1

はい、コンソールアプリケーションが同じキューからメッセージを消費している場合でも、相互に競合しています。したがって、キュー内のメッセージはそれらのうちの1つのみによって消費されます。 ファンアウトまたはトピックあるべき為替(ここで、メッセージが通過している)(にバインド

あなたが同じメッセージを受け取るより多くの加入者を持つようにしたい場合は、加入者ごとに異なるキューを定義する必要があり、 直接)。

詳細情報herehere

関連する問題