У меня есть очередь, в которую публикуется много сообщений (~ 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.
Я пытался создать очередь с параметром длительного пользования, но проблема, похоже, та же,В чем может быть проблема и ее решение?