我使用RabbitMQ的隊列解決方案,我有4個隊列,一個消費者在RabbitMQ的一個消費者多處理器。我希望我的消費者使用所有這些隊列,併爲每個隊列提供單獨的處理程序。無法實現使用EasynetQ客戶對於.NET
我GOOGLE了這一點,並發現的RabbitMQ和EasyNetQ(.NET客戶端的RabbitMQ),提供了先進的API(this link和This link)
在此文章中提供的示例代碼定義爲多處理器這一功能消費者:
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(); })
);
我的問題: 所以,當我嘗試使用這個例子中,添加<>方法是未知的。 問題是什麼?以及我應該如何使這種方法可用?
我的代碼的使用部分:
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);
})
);
}
我想我應該用一個命名空間或類中使用添加<>方法。可能它是一個擴展方法,我應該從庫中找到並添加相關的類。