Есть два способа получить размер очереди в протоколе AMQP.Вы можете использовать Queue.Declare или Basic.Get.
Если вы используете сообщения по мере их поступления с использованием Basic.Consume, вы не сможете получить эту информацию, если не отключите (тайм-аут) и не повторно объявите очередь, или не получите одно сообщение, но не подтвердите его.В более новых версиях AMQP вы можете активно запрашивать сообщение.
Что касается Pika, я не знаю специфики, но клиенты Python для AMQP были занудой на моей стороне.Зачастую вам необходимо создать monkeypatch классы, чтобы получить необходимую вам информацию, или позволить потребителю очереди установить тайм-аут, чтобы вы могли делать другие вещи через определенные промежутки времени, такие как запись статистики или узнать, сколько сообщений в очереди.
Другой способ обойти это - сдаться и использовать класс Pipe для запуска sudo rabbitmqctl list_queues -p my_vhost
.Затем проанализируйте вывод, чтобы найти размер всех очередей.Если вы сделаете это, вам нужно будет настроить /etc/sudoers
, чтобы он не запрашивал обычный пароль sudo.
Я молюсь, чтобы кто-то еще с большим опытом Pika ответил на это, указав, как вы можете делать все то, что яупомянуто, в этом случае я буду загружать Пику и пнуть шины.Но если этого не произойдет, и у вас возникнут проблемы с извлечением кода Pika, то посмотрите на haigha
.Я обнаружил, что их код намного проще, чем другие клиентские библиотеки Python AMQP, потому что они ближе к протоколу AMQP.