在rabbitmq.net客户端中,QueueingBasicConsumer被弃用。
他们建议改用EventingBasicConsumer。我以与他们相同的方式实现了IQueueingBasicConsumer接口,它工作得很好。
但是,我很好奇为什么它被弃用,为什么我应该使用EventingBasicConsumer

最佳答案

我想(我可能错了!)这是因为表演的原因。QueueingBasicConsumerusesSharedQueue<T>基本上是.netQueue带锁。为了处理传递,需要锁定队列、将项目排队并通知等待队列的其他线程(monitor.pulse)。
EventingBasicConsumerdoesn't使用任何排队机制。它只会激发需要在代码中处理的接收(handlebasicdeliver)事件。
正如您现在所看到的,EventingBasicConsumer有更少的性能开销,所以它更快(应该是这样)。

09-13 12:24