(PECL amqp >= Unknown)
AMQPQueue::consume — Использовать сообщения из очереди
Это блокирующая функция, которая получает следующее сообщение из очереди, когда оно становится доступным, и передает его функции обратного вызова.
callback
Функция обратного вызова, которой передается сообщение. Эта функция должна принимать минимум один параметр - это объект AMQPEnvelope и второй опциональный параметр - объект AMQPQueue, из которого было прочитано сообщение.
Метод AMQPQueue::consume() не будет возвращать назад управление скрипту PHP до тех пор, пока функция обратного вызова не вернет FALSE
.
flags
Битовая маска, состоящая из таких флагов: AMQP_NOACK
.
Генерирует исключение AMQPChannelException, если канал не открыт.
Генерирует исключение AMQPConnectionException, если соединение с брокером было потеряно.
Пример #1 Пример использования AMQPQueue::consume()
<?php
/* Создание соединения, используя все учетные данные по умолчанию: */
$connection = new AMQPConnection();
$connection->connect();
$channel = new AMQPChannel($connection);
/* создание объекта очереди */
$queue = new AMQPQueue($channel);
// объявление очереди
$queue->declare('myqueue');
$i = 0;
function processMessage($envelope, $queue) {
global $i;
echo "Сообщение $i: " . $envelope->getBody() . "\n";
$i++;
if ($i > 10) {
// Выходим после 10 сообщений
return false;
}
}
// получение сообщений
$queue->consume("processMessage");
?>