rabbitmq AMQP::потреблять()
Функция AMQP consume() - это блокирующая функция с обратным вызовом, Можно ли установить время ожидания для функции consume(), чтобы через определенное время она больше не блокировалась и выполнение кода завершалось?
1 answers
Да, вот как:
$amqp = new AMQPConnection($your_connection_params);
$amqp->setTimeout($seconds);
Затем, когда вы вызываете функцию consume() в очереди, если в течение периода ожидания не поступит никаких сообщений, из функции consume() будет выдано исключение AMQPException с сообщением "Ресурс временно недоступен". Если вы когда-нибудь выйдете из функции consume() или выйдете из тайм-аута, обязательно вызовите функцию cancel() для объекта очереди, чтобы правильно сбросить пользователя. Для этого вам необходимо сгенерировать глобально уникальный потребительский тег и передать его в качестве недокументированного третьего параметра в потреблять:
$tag = uniqid() . microtime(true);
$queue->consume($callback, $flags, $tag);
$queue->cancel($tag);
Таким образом, вы можете снова вызвать consume() позже без странных проблем, от которых у вас закружится голова.