2015-10-18 6 views
6

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 не был обновлен? Или я чего-то не хватает? Я был бы очень признателен за указание на некоторые документы об этом.

ответ

2

Вы правы, нет необходимости использовать QueueingBasicConsumer. Существует an issue в RabbitMQ учебники репо об этом.

Я отправил a pull request, и он был объединен, надеюсь, что документация будет обновлена ​​в ближайшее время.

Смежные вопросы