Rabbitmq - ack确认机制

<?php
$v_host = 'order';
$queue_name = 'goods';//队列名

//地址 端口 用户名 密码 vhost
$connection = new AMQPStreamConnection('localhost',5672,'rabbitmq','rabbitmq,$v_host);

//新建通道
$channel = $connection->channel();
//声明队列 参数:队列名、不存在则自动创建、持久化、不自动消亡
$channel->queue_declare($queue_name,false,true,false,false);

$callback = function($msg){
  echo 'received'.$msg->body.'\n';
  // ** 执行完成后确认消费成功
  $msg->ack();
}

// ** 一次只能消费一条消息,如无执行确认消费成功则无法继续消费
$channel->basic_qos(null,1,null);
//取出消息 进行消费
$channel->basic_consume($queue_name,'',false,true,false,false,callback);
while($channel->is_open){
  $channel->waite();
}

$channel->close();
$connection->close();
?>
posted @ 2022-08-22 15:09  Myifb  阅读(50)  评论(0)    收藏  举报