2015-10-18 50 views
6

tutorials on RabbitMq's site是相當直接的,但我注意到,在the Rpc example,開發商選擇使用線程阻塞調用consumer.Queue.Dequeue()而是採用了EventingBasicConsumer和其他地方使用的事件處理模型。RabbitMQ的RPC:EventingBasicConsumer或QueueingBasicConsumer

尋找通過current documentation中指出,

作爲版本3.5.0應用回調處理程序可以調用阻塞操作(如IModel.QueueDeclareIModel.BasicCancel)。 IBasicConsumer回調被同時調用。

凡爲the old documentation(訴1.5.0)指出它不支持

應用回調處理程序不能調用阻塞AMQP操作(如 IModel.QueueDeclareIModel.BasicCancel)。如果他們這樣做,頻道將陷入僵局。 [...]因此,QueueingBasicConsumer是訂閱隊列最安全的方式。

難道是RPC示例沒有被更新?或者我錯過了什麼?我非常感謝能夠提供一些關於這方面的文件。

回答

2

你是對的,沒有必要使用QueueingBasicConsumer。 在RabbitMQ教程中有an issue關於此的回購。

我發送了a pull request,它被合併,希望文檔將很快更新。