我正在使用 Rabbitmq 队列解决方案,我有 4 个队列和一个消费者。我希望我的消费者使用所有这些队列并为每个队列提供单独的处理程序。
我用谷歌搜索了这个,发现 Rabbitmq 和 EasyNetQ(RabbitMQ 的 .Net 客户端)通过高级 API 提供了这个功能(这个链接和这个链接)
本文提供的示例代码为消费者定义多个处理程序:
bus.Advanced.Consume(queue, x =>
x.Add<MyMessage>((message, info) => { Console.WriteLine("Got MyMessage {0}", message.Body.Text); countdownEvent.Signal(); })
.Add<MyOtherMessage>((message, info) => { Console.WriteLine("Got MyOtherMessage {0}", message.Body.Text); countdownEvent.Signal(); })
);
我的问题:所以当我尝试使用这个例子时, Add<> 方法是未知的。问题是什么?我应该怎么做才能使这种方法可用?
我的代码使用部分:
using RabbitMQ;
using EasyNetQ;
using EasyNetQ.Consumer;
我的代码:
using (var bus = RabbitHutch.CreateBus("host=localhost;prefetchcount=100"))
{
var queue = bus.Advanced.QueueDeclare("QueueMessageTypes.VehicleDeviceChangeMessage:QueueMessageTypes_VehicleDeviceChangeMsg");
bus.Advanced.Consume(queue, x => x
.Add<PositionMessage>((message, info) =>
{
Console.WriteLine("Got MyMessage {0}", message.Body.Text);
})
.Add<VehicleDeviceChangeMessage>((message, info) =>
{
Console.WriteLine("Got MyOtherMessage {0}", message.Body.Text);
})
);
}
我认为我应该使用命名空间或类来使用 Add<> 方法。可能这是我应该从库中找到并添加相关类的扩展方法。