的tutorials on RabbitMq's site是相當直接的,但我注意到,在the Rpc example,開發商選擇使用線程阻塞調用consumer.Queue.Dequeue()
而是採用了EventingBasicConsumer
和其他地方使用的事件處理模型。RabbitMQ的RPC:EventingBasicConsumer或QueueingBasicConsumer
尋找通過current documentation中指出,
作爲版本3.5.0應用回調處理程序可以調用阻塞操作(如
IModel.QueueDeclare
或IModel.BasicCancel
)。IBasicConsumer
回調被同時調用。
凡爲the old documentation(訴1.5.0)指出它不支持
應用回調處理程序不能調用阻塞AMQP操作(如
IModel.QueueDeclare
或IModel.BasicCancel
)。如果他們這樣做,頻道將陷入僵局。 [...]因此,QueueingBasicConsumer
是訂閱隊列最安全的方式。
難道是RPC示例沒有被更新?或者我錯過了什麼?我非常感謝能夠提供一些關於這方面的文件。