2

大家好!

我在php (Yii2) 上编写worker来使用php-amqplib处理 rabbitMQ 消息。

代码示例:

public function start($message)
{
    $this->_getChannel()->queue_declare($this->_getQueueName(), false, true, false, false);

    $this->stdout(" [*] Worker ". $this->_getQueueName() ." started\n", Console::BOLD);
    $this->_getChannel()->basic_qos(null, 1, null);

    $this->_getChannel()->basic_consume(
    $this->_getQueueName(), '', false, false, false, false, [$this, 'rabbitCallback']
    );

    while (count($this->_getChannel()->callbacks)) {
       $this->_getChannel()->wait();
    }

    $this->_getChannel()->close();
}

public function rabbitCallback($message)
{
    $this->callbackResponse(json_decode($message->body, true));

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

我使用主管妖魔化工人。

前两天一切正常,然后我在 RabbitMQ 中看到:

Ready 1000 msg
Unacked 1000 msg

工人根本不阅读消息,数量增加了。

supervisor> status
    journal:journal_00    RUNNING   pid 103516, uptime 3 days, 20:40:55
    journal:journal_01    RUNNING   pid 103517, uptime 3 days, 20:40:55
    journal:journal_02    RUNNING   pid 103514, uptime 3 days, 20:40:55

主管告诉工人工作正常,但可以阅读消息。

如果我重新启动主管 - 一切都开始正常工作,消息开始减少。

日志清晰=(

你们中有人有同样的问题吗?

4

0 回答 0