Очередь RabbitMQ становится пустой случайным образом, остается около 5K сообщений - PullRequest
0 голосов
/ 19 апреля 2019

У меня есть очередь, в которую публикуется много сообщений (~ 10K).К этой очереди подключено несколько потребителей со следующим кодом в codeigniter с использованием библиотеки php-amqplib

public function processQueue()
{
    // Make connection
    $connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
    // Make channel
    $channel = $connection->channel();
    // Declare queue
    $channel->queue_declare(QUEUE_NAME, false, false, false, false);

    // PHP callable
    $callback = function ($msg) {

        //DO MESSAGE PROCESSING HERE

        $msg->delivery_info['channel']->basic_ack($msg->delivery_info['delivery_tag']);

    };

    $channel->basic_consume(AGENTS_QUEUE_PROCESSING, '', false, true, false, false, $callback);

    // While queue is empty, wait
    while (count($channel->callbacks)) {
        // Wait
        $channel->wait();
    }

    // Close channel and connection
    $channel->close();
    $connection->close();
}

Сообщения заполняются и одновременно используются несколькими такими потребителями.Я заметил, что, когда осталось около 5–6 тыс. Сообщений (т. Е. После использования около 4–5 тыс.) Сообщений, очередь внезапно становится пустой, когда потребители бездействуют и ожидают новых сообщений.Кроме того, в этот момент происходит резкое падение общего количества сообщений на веб-панели управления RabbitMQ.

Я пытался создать очередь с параметром длительного пользования, но проблема, похоже, та же,В чем может быть проблема и ее решение?

...