単一のコンシューマーを使用して複数の RabbitMq キューを監視できる .NET で作成したアプリケーションがあります。
例えば:
using (IConnection connection = factory.CreateConnection())
{
using (IModel channel = connection.CreateModel())
{
var _consumer = new QueueingBasicConsumer(channel);
string[] list = new string[] { "Queue1", "Queue2", "Queue3", "Queue4" };
_consumer = new QueueingBasicConsumer(channel);
foreach (string currQueueName in list)
{
channel.QueueDeclare(currQueueName, false, false, false, null);
channel.BasicConsume(currQueueName, true, _consumer);
}
while (true)
{
var ea = (BasicDeliverEventArgs)_consumer.Queue.Dequeue();
var body = ea.Body;
var message = Encoding.UTF8.GetString(body);
Console.WriteLine(" [x] Received {0}", message);
ProcessMessage(message);
}
}
}
基本的に、複数のキューに作業を分散できるようにしたいだけですが、それらすべてを消費するアプリケーションは 1 つだけです (または、複数のアプリケーションを展開して同じ機能を実行することもできます)。
消費者がキュー全体で均等に仕事を引き受けるように、ワークアウトをキュー全体に分散しようとしています。
これは、Bunny またはネイティブの Ruby ドライバーを使用して可能ですか?