我正在考虑使用EasyNetQ与RabbitMQ进行交互,并想知道它是否可以支持以下情况:
我找到的可能性是:
问题是我可以将现有队列与自定义参数一起使用而无需指定它们吗?
答案 0 :(得分:4)
如果队列已存在并且您知道其名称,则无法使用IAdvancedBus.Consume<T>
方法(而不用担心IAdvancedBus.QueueDeclare
)?
例如:
var queueName = "TheNameOfYourExistingQueue";
var existingQueue = new EasyNetQ.Topology.Queue(queueName, false);
// bus should be an instance of IAdvancedBus
bus.Consume<TypeOfYourMessage>(existingQueue,
(msg, info) =>
{
// Implement your handling logic here
});
请注意,EasyNetQ可能无法自动将邮件反序列化为TypeOfYourMessage
的实例。如果是这种情况,解决它的一种方法是绕过EasyNetQ的消息序列化器,以便您可以直接访问消息的字节数组。如果您希望走这条路线,请使用以下重载Consume
:
void Consume(IQueue queue, Func<Byte[], MessageProperties, MessageReceivedInfo, Task> onMessage);