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