最近在使用php-amqplib时, 发现一个问题
首先, 我的信道使用的是confirm模式, 即发送方确认模式
在使用过程中, 我的消费者最终应答是这样的 $message->delivery_info['channel']->basic_ack($message->delivery_info['delivery_tag']);
都是拿着delivery_tag进行应答的, 但是生产者中官方的demo如下, 难道无法拿到对应的delivery_tag么?
$channel->set_ack_handler(
function (AMQPMessage $message) {
var_Dump($message->delivery_info);
echo "Message acked with content " . $message->body . PHP_EOL;
echo '<br/>';
}
);
另外, 发现消费者中的
$message->delivery_info['delivery_tag']值随着生产者消息的不断发布, 这个tag一直在自增, 如果网站量超级大的话, 很容易不就超过tag自增上线了?
这个
set_ack_handler
对应的 confirm 模式是 producer 和 rabbitmq 之间的的 confirm,不是指 producer 和 consumer通过
$channel->confirm_select();
和$channel->wait_for_pending_acks();
指定,具体可以搜搜对应的文档,例如 这篇 https://www.zybuluo.com/dume2...