RabbitMq Rpc: EventingBasicConsumer или QueueingBasicConsumer

The учебники на сайте RabbitMq в довольно прямолинейны, но я заметил, что в пример Rpc, разработчики предпочитают использовать вызов блокировки потоков consumer.Queue.Dequeue() вместо EventingBasicConsumer и модель обработки событий, используемый в другом месте.

глядя через текущая документация установлено, что

начиная с версии 3.5.0 обработчики обратного вызова приложения могут вызывать операции блокировки (такие как as IModel.QueueDeclare или IModel.BasicCancel). IBasicConsumer обратные вызовы вызываются одновременно.

где старый документация (V. 1.5.0) заявляет, что он не поддерживается

обработчики обратного вызова приложения не должны вызывать блокирующие операции AMQP (такие как IModel.QueueDeclare или IModel.BasicCancel). Если они это сделают, канал закроется. [...] По этой причине, QueueingBasicConsumer это самый безопасный способ подписки на очереди.

может быть, что RPC пример не был обновлен? Или я что-то упускаю? Я был бы очень признателен, если бы вы указали на некоторые документы об этом.

1 ответов


вы правы, нет необходимости использовать QueueingBasicConsumer. Есть проблема в RabbitMQ учебники РЕПО об этом.

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