侧边栏壁纸
博主头像
月伴飞鱼 博主等级

行动起来,活在当下

  • 累计撰写 126 篇文章
  • 累计创建 31 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

死信队列队列里的消息是会一直保存吗?

月伴飞鱼
2025-03-19 / 0 评论 / 1 点赞 / 10 阅读 / 0 字
温馨提示:
部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

死信队列(DLQ)中的消息不会一直保存。

它们通常会根据不同的消息队列系统的配置和策略,达到一定的条件后被删除。

具体情况如下:

1. RocketMQ

  • 死信队列(DLQ):消息在无法被正常消费时(如超过最大重试次数、消息过期等),会被送入死信队列。

  • 存储时间(TTL):死信队列中的消息有一定的过期时间(TTL),超过TTL后,消息会被自动删除。TTL可以在发送消息时设置,也可以通过系统配置进行限制。

  • 队列长度限制:死信队列的消息数目也是有限制的,当队列达到配置的最大长度时,最旧的消息会被删除。

2. Kafka

  • 死信队列(DLQ):Kafka本身没有专门的死信队列机制,但可以通过设置死信主题来模拟类似功能。当消息消费失败时,消费者可以将消息发送到特定的死信主题中。

  • 消息过期时间(TTL):在Kafka中,所有消息都受到保留策略的控制。通过配置 log.retention.ms(消息的最大存储时间)和 log.retention.bytes(日志大小限制),消息会在达到配置的时间或大小限制后被清除。

  • 队列大小限制:Kafka中的消息会根据配置的存储容量清除,超过存储限制的消息会被自动删除。

3. RabbitMQ

  • 死信队列(DLQ):RabbitMQ支持通过死信交换机(DLX)来将无法消费的消息转移到死信队列。常见的原因包括消息过期、队列长度超过限制等。

  • 存储时间(TTL):消息在死信队列中的存活时间受到配置的过期时间(TTL)的控制,超时后消息会被删除。

  • 队列大小限制:死信队列的消息存储同样受到队列大小限制,超过限制后,旧的消息会被删除。

总结

死信队列中的消息并不会永久保存,它们通常会受到以下因素的影响:

  • 过期时间(TTL):消息超过TTL后自动删除。

  • 队列容量限制:超过容量限制时,最旧的消息会被删除。

因此,死信队列中的消息最终会被删除,不会一直保存,这一点适用于RocketMQ、Kafka和RabbitMQ等常见的消息队列系统。

公众号.png

1
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin
    1. 支付宝打赏

      qrcode alipay
    2. 微信打赏

      qrcode weixin
博主关闭了所有页面的评论