RabbitMQ队列随机空白,剩余大约5K消息

时间:2019-04-19 20:55:04

标签: rabbitmq php-amqplib

我有一个队列,很多消息发布到该队列(〜10K)。使用php-amqplib库在codeigniter中通过以下代码连接到多个使用者,

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-6k条消息(即消耗了4-5k条消息)后,队列突然变空,消费者闲置并等待更多消息。另外,RabbitMQ管理Web面板上的消息总数在此刻突然下降。

我尝试使用持久参数创建队列,但问题似乎相同。可能是什么问题及其解决方案?

0 个答案:

没有答案