rabbitmq — работники на php замораживаются на супервизоре после 2 дней работы

Всем привет!

я пишу рабочие на PHP (Yii2) для обработки сообщений rabbitMQ с использованием PHP-amqplib.

Пример кода:

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']);
}

я использую руководитель для демонизировать рабочих.

Все отлично работает первые 2 дня, потом вижу в 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

Супервайзер говорит, что работники работают нормально, но сообщения можно читать.

Если я перезапущу супервизор — все начнет работать нормально, сообщения начнут уменьшаться.

Логи понятны = (

У кого-нибудь из вас есть такая же проблема?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]