大家好!
我在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
主管告诉工人工作正常,但可以阅读消息。
如果我重新启动主管 - 一切都开始正常工作,消息开始减少。
日志清晰=(
你们中有人有同样的问题吗?