Rabbitmq — очередь кажется пустой, хотя в ней есть сообщения

У меня есть потребитель кролика, который отлично работает (правильно обрабатывает сообщения, отправляет аки и т. д.).

В нем я пытаюсь проверить, пуста ли очередь, используя queue_declare и пассивный флаг (как предлагается здесь: RabbitMQ – Как проверить, пуста ли очередь?).

Соответствующая часть кода выглядит так:

  <?php
      $a = $this->channel->queue_declare($queueName, true);
      var_dump($a);

Моя проблема в том, что он всегда возвращается (независимо от того, сколько сообщений находится в очереди - я тестировал примерно 1000):

    array(3) {
      [0]=>
        string(4) "fastQueue"
      [1]=>
        int(0)
      [2]=>
        int(1)
    }

Есть идеи, почему?

Какую библиотеку PHP вы используете? Какая версия RabbitMQ и Erlang? Не могли бы вы предоставить полный набор кода для воспроизведения?

Luke Bakken 21.02.2019 16:15

Обычно размер очереди не имеет отношения к потребителям очереди — это указывает на плохой дизайн системы. Однако существует API управления, который можно использовать для возврата размера очереди, если это действительно то, что вы ищете.

theMayer 21.02.2019 17:19

@LukeBakken Я использую последнюю версию RabbitMQ, github.com/php-amqplib/php-amqplib в качестве библиотеки и ... Я вернусь к вам с версией Erlang (я разговариваю по телефону).

zozo 22.02.2019 09:27

@theMayer Меня на самом деле не волнует размер очереди, меня просто волнует, пуста она или нет, потому что я не хочу оставлять соединение открытым, если в очередях ничего нет (если вы можете объяснить, почему это будет плохой системой дизайн, буду признателен). Кроме того, в будущем я на самом деле думал проверить размер очереди и создать дополнительных потребителей / повысить приоритеты процессов для всплесков (опять же, почему это может быть плохим дизайном системы - без сарказма, я искренне спрашиваю).

zozo 22.02.2019 09:35
Basic.Get это то, что вы ищете. Он немедленно возвращается независимо от того, доступно сообщение или нет.
theMayer 22.02.2019 13:46
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
5
536
0

Другие вопросы по теме