RabbitMq Rpc:EventingBasicConsumer或QueueingBasicConsumer

par*_*man 7 rpc amqp rabbitmq

关于RabbitMq网站教程非常简单,但我注意到在Rpc示例中,开发人员选择使用线程阻塞调用consumer.Queue.Dequeue()而不是EventingBasicConsumer使用其他地方使用的事件处理模型.

查看当前的文档,说明了这一点

从版本3.5.0开始,应用程序回调处理程序可以调用阻塞操作(例如IModel.QueueDeclareIModel.BasicCancel).IBasicConsumer回调是同时调用的.

凡为老文档(诉1.5.0)指出它不支持

应用程序回调处理程序不得调用阻止AMQP操作(例如 IModel.QueueDeclareIModel.BasicCancel).如果他们这样做,该频道将陷入僵局.[...]因此,QueueingBasicConsumer订阅队列是最安全的方式.

可能是RPC示例还没有更新?或者我错过了什么?我非常感谢能够指出一些关于此的文档.

ols*_*lsh 3

你说得对,没有必要使用QueueingBasicConsumer。RabbitMQ 教程存储库中有一个关于此的问题。

我已经发送了拉取请求并已合并,希望文档能尽快更新。