gpt4 book ai didi

ruby - 使用单个应用程序监控多个 RabbitMq 订阅

转载 作者:数据小太阳 更新时间:2023-10-29 07:19:46 26 4
gpt4 key购买 nike

我有一个用 .NET 编写的应用程序,它可以使用单个使用者监视多个 RabbitMq 队列。

例如:

 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);
}
}
}

基本上,我只想能够跨多个队列分配工作,但只有一个应用程序使用它们(或者可以部署多个应用程序并执行相同的功能)。

我正在尝试跨队列分配工作,以便消费者在队列中平均接受工作。

这可以使用 Bunny 或原生 Ruby 驱动程序吗?

最佳答案

我想我只是需要在这上面多花点时间。

我添加了一个简短的答案,以防万一这对其他人有帮助(或者如果有人想提供更简洁的解决方案:P)

client = Bunny.new
client.start

channel = client.create_channel
queues = %w(testing1 testing2 testing3)
queues.each do |name|
channel.queue(name).subscribe(timeout: 2) do |info, props, body|
puts "[#{name}] Got #{body}"
end
end
loop do
sleep 1
end

这有效地完成了我在 OP 中描述的内容。

关于ruby - 使用单个应用程序监控多个 RabbitMq 订阅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30537711/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com