最近学习rabbitmq, 在官网的教程上发布者确认只看到java,C#的demo,于是自己捣鼓了一下,下面是php版本的demo,不对的地方请指正
<?php
require "../../vendor/autoload.php";
use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;
$connection = new AMQPStreamConnection('192.168.88.128', 5672, 'guest', '123456');
$channel = $connection->channel();
$exchangeName = 'confirm_exchange';
$queueName = 'confirm_queue';
$routeingKey = 'confirm';
$channel->exchange_declare($exchangeName, 'topic', true);
$channel->queue_declare($queueName, false, true, false, false);
$channel->queue_bind($queueName, $exchangeName, $routeingKey);
$msg = new AMQPMessage(
"Hello World!",
array('delivery_mode' => AMQPMessage::DELIVERY_MODE_PERSISTENT)
);
$channel->confirm_select(); //开启确认模式
$channel->basic_publish($msg, $exchangeName, $routeingKey);
//注册ack回调
$channel->set_nack_handler(function (AMQPMessage $msg) {
var_dump('nack');
});
$channel->set_ack_handler(function (AMQPMessage $msg) {
var_dump("ack");
});
//等待接收ack
$channel->wait_for_pending_acks();