(PECL amqp >= Unknown)
AMQPQueue::ack — メッセージの受信を受け付ける
$delivery_tag
[, int $flags
= AMQP_NOPARAM
] )
AMQPQueue::get() あるいは AMQPQueue::consume() が
AMQP_AUTOACK
フラグなしで取得したメッセージの受信を認めます。
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']);
}
?>