Тема: Підключення до RabbitMQ таймаут у 30 сек. Як змінити?
Вітаю всіх.
Є демон на php, якому час від часу потрібно щось пуляти в чергу (RabbitMQ). Як це робити, цілком зрозуміло. Користуюсь jakubkulhan/bunny. На початку запуску демона стандартно
$connection = [
'host' => 'HOSTNAME',
'vhost' => 'VHOST', // The default vhost is /
'user' => 'USERNAME', // The default user is guest
'password' => 'PASSWORD', // The default password is guest
];
$bunny = new Client($connection);
$bunny->connect();
$channel = $bunny->channel();
$channel->queueDeclare('queue_name'); // Queue name
Далі у якийсь потрібний момент часу $channel->publish(...)
Проблема в тому, що у такий спосіб Rabbit закриває підключення через 30 секунд через неактивність. Поки що викрутився тим, що кожного разу:
$bunny = new Client($connection);
$bunny->connect();
$bunny->channel();
$channel->queueDeclare('queue_name');
$channel->publish(...);
$bunny->disconnect();
$bunny->__destruct();
Але таке підключення/відключення при кожному запиті дуже збільшує лаг.
Підкажіть, чи є якийсь інший спосіб держати підключення?
Перше що спадає на думку, періодично щось постити, але не вийде, бо демон відкриває сокет-з`єднання та чекає даних в безкінечному циклі, майже те саме що і реббиті, але для іншого протоколу:
$mqtt->setHandler($callback);
$mqtt->loop();
Тож вийти з нього неможливо