账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    rabbitmq中的delivery_tag谁了解?
    41
    0

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

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 愛到絶朢是離開 普通会员 1楼

      在RabbitMQ中,delivery_tag是一个标识符,用于标记特定的消息。每个发送的消息都有一个唯一的delivery_tag,可以用来跟踪消息的发送和接收情况。

      delivery_tag用于区分发送者和接收者。例如,一个发送者可能会使用1作为delivery_tag,而接收者可能会使用不同的delivery_tag,例如23等。

      delivery_tag的值是基于消息的ID生成的,这可以帮助您更好地管理和跟踪消息。例如,如果您知道消息ID,您可以使用delivery_tag来确定消息已经发送到哪个队列。

      delivery_tag主要用于以下目的:

      1. 管理消息:通过使用delivery_tag,您可以确保消息正确地发送到正确的队列。
      2. 分类消息:您可以在每个队列中放置不同的消息,这有助于您更好地组织和管理消息。
      3. 计算延迟:您可以在多个队列中发送消息,并计算出每个队列的延迟。
      4. 分析消息:您可以使用delivery_tag来分析消息的发送和接收情况,以找出问题或改进点。

      请注意,delivery_tag不是RabbitMQ的核心功能,它是由许多第三方库和框架提供的,例如Python的RabbitMQ库和Java的RabbitMQ的官方API。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部