(PECL amqp >= Unknown)
AMQPQueue::ack — Подтвердить получение сообщения
$delivery_tag
[, int $flags
= AMQP_NOPARAM
] )
Этот метод позволяет получить подтверждение для сообщения, что оно извлечено без флага AMQP_AUTOACK
через
AMQPQueue::get() или AMQPQueue::consume().
delivery_tag
Тег доставки сообщения, который подтверждает получение.
flags
Только допустимый флаг, который может быть передан в AMQP_MULTIPLE
.
Генерирует исключение AMQPChannelException, если канал не открыт.
Генерирует исключение AMQPConnectionException, если соединение с брокером было потеряно.
Возвращает TRUE
в случае успешного завершения или FALSE
в случае возникновения ошибки.
Пример #1 Пример использования AMQPQueue::ack() с AMQPQueue::get()
<?php
/* создание соединения, используя все учетные данные по умолчанию: */
$connection = new AMQPConnection();
$connection->connect();
$channel = new AMQPChannel($connection);
/* создание объекта очереди */
$queue = new AMQPQueue($channel);
//объявление очереди
$queue->declare('myqueue');
//получение следующего сообщения, но не отмечая как доставленное
$message = $queue->get(AMQP_NOPARAM);
echo $message['msg'];
//подтверждение о доставке сообщения
$queue->ack($message['delivery_tag']);
?>
Пример #2 Пример использования AMQPQueue::ack() с AMQPQueue::consume()
<?php
/* Создание соединения, используя все учетные данные по умолчанию: */
$connection = new AMQPConnection();
$connection->connect();
/* создание очереди */
$queue = new AMQPQueue($connection);
//объявление очереди
$queue->declare('myqueue');
$options = array(
'min' => 1,
'max' => 10,
'ack' => false
);
//получение сообщений, но не отмечая их как доставленные
$messages = $queue->consume($options);
foreach ($messages as $message) {
echo $message['message_body'];
//подтверждение о доставке сообщения
$queue->ack($message['delivery_tag']);
}
?>