2015-10-18 11 views
6

Il tutorials on RabbitMq's site sono piuttosto semplice, ma ho notato che in the Rpc example, gli sviluppatori scelgono di utilizzare la chiamata filo-blocco consumer.Queue.Dequeue() invece di utilizzare il EventingBasicConsumer e il modello di gestione degli eventi utilizzato altrove.RabbitMQ Rpc: EventingBasicConsumer o QueueingBasicConsumer

guardando attraverso il current documentation si precisa che

A partire dalla versione 3.5.0 gestori di applicazione richiamata può invocare le operazioni di blocco (come IModel.QueueDeclare o IModel.BasicCancel). I callback vengono richiamati contemporaneamente.

Dove come the old documentation (v. 1.5.0) si rileva che non è supportato

gestori di callback applicazione non devono invocare bloccando operazioni AMQP (come IModel.QueueDeclare o IModel.BasicCancel). Se lo fanno, il canale si bloccherà. [...] Per questo motivo, QueueingBasicConsumer è il modo più sicuro di iscriversi a una coda.

Potrebbe essere che l'esempio RPC non è stato aggiornato? O mi sta sfuggendo qualcosa? Gradirei molto essere indicato per alcuni documenti su questo.

risposta

2

Hai ragione, non è necessario utilizzare QueueingBasicConsumer. C'è il repository an issue in RabbitMQ su questo.

Ho inviato a pull request ed è stato unito, speriamo che la documentazione venga aggiornata a breve.