rabbitmq AMQP :: потреблять ()

Функция AMQP consume () – это функция блокировки с обратным вызовом, возможно ли установить тайм-аут для функции потребления (), поэтому через определенное время он больше не блокируется и выполнение кода завершается?

Solutions Collecting From Web of "rabbitmq AMQP :: потреблять ()"

Да, вот как:

$amqp = new AMQPConnection($your_connection_params); $amqp->setTimeout($seconds); 

Затем, когда вы вызываете consume () в очередь, если сообщения не поступают в течение периода ожидания, AMQPException будет выведен из consume () с сообщением «Ресурс временно недоступен». Если вы когда-либо выходите из потребления () или набираете тайм-аут, обязательно вызывайте cancel () в объекте очереди, чтобы правильно сбросить потребитель. Для этого вам нужно создать глобально уникальный потребительский тег и передать его в качестве недокументированного третьего параметра для потребления:

 $tag = uniqid() . microtime(true); $queue->consume($callback, $flags, $tag); $queue->cancel($tag); 

Таким образом, вы можете снова вызвать consume () позже без каких-либо странных проблем, которые заставят вашу голову вращаться.