Я хотел бы использовать Pika/RabbitMQ по образцу, аналогичному стандартному сокету: то есть настроить соединение, затем сделать блокирующие синхронные вызовы для получения одного сообщения каждый раз, когда я готов выполнить дополнительную работу.
Вариант А: basic_get
Метод basic_get
метода BlockingConnection
предлагает возможность получить сообщение, но он немедленно возвращается, если нет доступных для приема сообщений. Это похоже на вызов сокета recv
с отключенной блокировкой. Я мог бы использовать этот подход с тайм-аутом для непрерывного опроса, но это неэффективно.
Вариант Б: basic_consume
Метод basic_consume
из BlockingConnection
мог бы выполнить эту работу, но у него есть странное требование, чтобы я имел start_consuming()
где-то еще, в отдельном потоке. Поскольку мои вызывающие объекты моего метода receive
уже ожидают блокировки, ожидая сообщения, это кажется пустой тратой потока.
Можно ли с Pika сделать аналог socket.recv(blocking=True)
?