RabbitMq具有多个队列的单个使用者
我想为多个队列创建单个使用者(通用侦听器)。使用者应该侦听多个队列 让我们看看这个例子RabbitMq具有多个队列的单个使用者,rabbitmq,Rabbitmq,我想为多个队列创建单个使用者(通用侦听器)。使用者应该侦听多个队列 让我们看看这个例子 channel.ExchangeDeclare(exchange: "logs", type: "fanout"); var queueName = "QeueueName.Instance1"; channel.QueueBind(queue: queueName, exchange: "logs",
channel.ExchangeDeclare(exchange: "logs", type: "fanout");
var queueName = "QeueueName.Instance1";
channel.QueueBind(queue: queueName,
exchange: "logs",
routingKey: "");
Console.WriteLine(" [*] Waiting for logs.");
var consumer = new EventingBasicConsumer(channel);
consumer.Received += (model, ea) =>
{
var body = ea.Body;
var message = Encoding.UTF8.GetString(body);
Console.WriteLine(" [x] {0}", message);
};
我想将消费者与动态队列数量相关联,他们会
增加时间,以便我将如何将消费者与未来创建的队列关联。我已经为相同的队列创建了窗口服务,因此我必须循环所有队列并与消费者关联,对于未来创建的队列,我应该将它们添加到消费者队列列表中。当我第一次阅读您的问题时,我认为您不能绑定一个消费者到多个队列,但我刚刚尝试了这个方法,效果很好:
ConnectionFactory factory = new ConnectionFactory()
{
VirtualHost = "testHost1",
UserName = "guest",
Password = "guest",
Port = 5672,
};
var connection = factory.CreateConnection();
var channel = connection.CreateModel();
channel.ExchangeDeclare("testExchange1", ExchangeType.Fanout);
channel.QueueDeclare("testQueue1");
channel.QueueDeclare("testQueue2");
channel.QueueBind("testQueue1", "testExchange1", "");
channel.QueueBind("testQueue2", "testExchange1", "");
var consumer1 = new EventingBasicConsumer(channel);
consumer1.Received += Consumer1OnReceived;
channel.BasicConsume("testQueue1", false, consumer1);
channel.BasicConsume("testQueue2", false, consumer1);
请注意,您的代码不包括对
BasicConsume()
的调用。如果没有它,您的消费者将无法收到任何东西。当我第一次阅读您的问题时,我认为您无法将一个消费者绑定到多个队列,但我只是尝试了这个方法,效果很好:
ConnectionFactory factory = new ConnectionFactory()
{
VirtualHost = "testHost1",
UserName = "guest",
Password = "guest",
Port = 5672,
};
var connection = factory.CreateConnection();
var channel = connection.CreateModel();
channel.ExchangeDeclare("testExchange1", ExchangeType.Fanout);
channel.QueueDeclare("testQueue1");
channel.QueueDeclare("testQueue2");
channel.QueueBind("testQueue1", "testExchange1", "");
channel.QueueBind("testQueue2", "testExchange1", "");
var consumer1 = new EventingBasicConsumer(channel);
consumer1.Received += Consumer1OnReceived;
channel.BasicConsume("testQueue1", false, consumer1);
channel.BasicConsume("testQueue2", false, consumer1);
请注意,您的代码不包括对
BasicConsume()
的调用。没有它,您的消费者将无法收到任何东西。是的,还有?你有什么问题?RabbitMQ不是一种编程语言,所以你需要向我们展示你需要帮助的代码。伙计,我已经更新了我的问题,请提供帮助。如果你对此有任何想法,这很紧急,我陷入了困境。是的,还有?你有什么问题?RabbitMQ不是一种编程语言,所以你需要向我们展示你需要帮助的代码。伙计,我已经更新了我的问题,请帮助如果你对此有任何想法,它很紧急,我陷入了这个困境。