RabbitMq Rpc:EventingBasicConsumer或QueueingBasicConsumer

时间:2015-10-18 19:39:05

标签: rabbitmq rpc amqp

tutorials on RabbitMq's site非常直截了当,但我注意到在the Rpc example中,开发人员选择使用线程阻止调用consumer.Queue.Dequeue()而不是使用EventingBasicConsumer和其他地方使用的事件处理模型。

通过current documentation查看

  

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

the old documentation(v.1.5.0)表明不支持

  

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

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

1 个答案:

答案 0 :(得分:3)

你是对的,没有必要使用include 'institute.php'; include 'student.php'; include 'enroll.php'; $institute=new institute\institute('GLAB'); $student=new student\student('zami'); $enroll=new enroll\enroll($student,$institute); 。 RabbitMQ教程中有an issue个回复。

我已发送a pull request并已合并,希望文档尽快更新。