(PECL amqp >= Unknown)
AMQPQueue::ack — Acknowledge the receipt of a message
$delivery_tag
[, int $flags
= AMQP_NOPARAM
] )
This method allows the acknowledgement of a message that is retrieved without the AMQP_AUTOACK
flag through
AMQPQueue::get() or AMQPQueue::consume()
delivery_tag
The message delivery tag of which to acknowledge receipt.
flags
The only valid flag that can be passed is AMQP_MULTIPLE
.
Throws AMQPChannelException if the channel is not open.
Throws AMQPConnectionException if the connection to the broker was lost.
成功时返回 TRUE
, 或者在失败时返回 FALSE
。
Example #1 AMQPQueue::ack() example with AMQPQueue::get()
<?php
/* Create a connection using all default credentials: */
$connection = new AMQPConnection();
$connection->connect();
$channel = new AMQPChannel($connection);
/* create a queue object */
$queue = new AMQPQueue($channel);
//declare the queue
$queue->declare('myqueue');
//get the next message, but don't mark it as delivered
$message = $queue->get(AMQP_NOPARAM);
echo $message['msg'];
//acknowledge the message as received
$queue->ack($message['delivery_tag']);
?>
Example #2 AMQPQueue::ack() example with AMQPQueue::consume()
<?php
/* Create a connection using all default credentials: */
$connection = new AMQPConnection();
$connection->connect();
/* create a queue object */
$queue = new AMQPQueue($connection);
//declare the queue
$queue->declare('myqueue');
$options = array(
'min' => 1,
'max' => 10,
'ack' => false
);
//get the messages, but don't mark them as delivered
$messages = $queue->consume($options);
foreach ($messages as $message) {
echo $message['message_body'];
//acknowledge the message as received
$queue->ack($message['delivery_tag']);
}
?>