rabbitmq中的delivery_tag谁了解?

网络小白
  • 273

最近在使用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自增上线了?

回复
阅读 4.7k
1 个回答

这个 set_ack_handler 对应的 confirm 模式是 producer 和 rabbitmq 之间的的 confirm,不是指 producer 和 consumer

通过 $channel->confirm_select();$channel->wait_for_pending_acks(); 指定,具体可以搜搜对应的文档,例如 这篇 https://www.zybuluo.com/dume2...

宣传栏