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