2015-10-18 9 views
6

Die tutorials on RabbitMq's site sind gerade ziemlich nach vorne, aber ich bemerkte in the Rpc example, dass die Entwickler wählen consumer.Queue.Dequeue() den Faden blockierenden Aufruf zu verwenden, anstatt die EventingBasicConsumer der Verwendung und das Event-Modell an anderer Stelle verwendet Handhabung.RabbitMQ Rpc: EventingBasicConsumer oder QueueingBasicConsumer

Blick durch die current documentation wird angegeben, dass

Ab Version 3.5.0 Anwendung Callback-Handler blockiert Operationen aufrufen können (wie IModel.QueueDeclare oder IModel.BasicCancel). IBasicConsumer Callbacks werden gleichzeitig aufgerufen.

Wo, wie the old documentation (v. 1.5.0) besagt, dass es nicht

Anwendung Callback-Handler müssen AMQP (wie IModel.QueueDeclare oder IModel.BasicCancel) blockiert nicht aufrufen unterstützt wird. Wenn dies der Fall ist, wird der Kanal blockiert. [...] Aus diesem Grund ist QueueingBasicConsumer der sicherste Weg, eine Warteschlange zu abonnieren.

Könnte es sein, dass das RPC-Beispiel nicht aktualisiert wurde? Oder fehlt mir etwas? Ich würde es sehr schätzen, auf eine Dokumentation darüber hingewiesen zu werden.

Antwort

2

Sie haben recht, Sie brauchen QueueingBasicConsumer nicht zu verwenden. Es gibt an issue in RabbitMQ tutorials repo darüber.

Ich habe a pull request gesendet und es wurde zusammengeführt, hoffe, dass die Dokumentation bald aktualisiert wird.