PHP AMQPLib (RabbitMQ) Взаимная блокировка

Я использую PHP AMQPLib для выполнения некоторых фоновых заданий и заданий, которые можно выполнять параллельно. Моя проблема в том, что если у меня слишком много рабочих мест, у меня, похоже, заканчивается память. Поэтому я ограничил работу максимум 5 в любое время. Хотя теперь максимальное количество очередей останется равным 6 (основная очередь плюс 5 очередей обратного вызова), соединения по-прежнему разрываются, что, по-видимому, приводит к тупику.

Клиент подтвердит входящий обратный вызов:

public function on_response($rep) {
if($rep->get('correlation_id') == $this->corr_id) {
$this->ready = true;
$this->response = $rep->body;

$rep->delivery_info['channel']->basic_ack($rep->delivery_info['delivery_tag']);
$rep->delivery_info['channel']->queue_delete();

$this->connection->close(); //connection is opened in constructor via  $this->connection = new AMQPConnection($host, $port, $username, $password, $vHost);
}
}

в то время как очередь правильно закрыта и удалена (как указано выше, максимальное количество очередей остается равным 6 в любое время), соединение остается открытым. Как мне удается на самом деле закрыть устаревшее соединение?

[РЕДАКТИРОВАТЬ]: Кажется, проблема в том, что у меня заканчивается оперативная память, потому что RabbitMQ не освобождает оперативную память, пока открыто соединение. так что мне действительно нужно знать, как правильно разорвать эти соединения …

0

Решение

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

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector