在rabbitmq.net客户端中,QueueingBasicConsumer
被弃用。
他们建议改用EventingBasicConsumer
。我以与他们相同的方式实现了IQueueingBasicConsumer
接口,它工作得很好。
但是,我很好奇为什么它被弃用,为什么我应该使用EventingBasicConsumer
?
最佳答案
我想(我可能错了!)这是因为表演的原因。QueueingBasicConsumer
usesSharedQueue<T>
基本上是.netQueue
带锁。为了处理传递,需要锁定队列、将项目排队并通知等待队列的其他线程(monitor.pulse)。EventingBasicConsumer
doesn't使用任何排队机制。它只会激发需要在代码中处理的接收(handlebasicdeliver)事件。
正如您现在所看到的,EventingBasicConsumer
有更少的性能开销,所以它更快(应该是这样)。