【问题标题】:Requeueing dead letter messages重新排队死信消息
【发布时间】:2015-09-23 18:04:17
【问题描述】:

spring-amqp 中是否有内置功能可以轻松重新排队死信消息?我可以编写代码来完成它,但它似乎是一个非常适合框架的常见用例。

【问题讨论】:

  • 你能比下面的评论更详细吗?有没有办法为重新排队某些消息设置限制?我的意思是这样的:给每条消息重新排队的三个机会。三封邮件后拒绝。

标签: spring-amqp


【解决方案1】:

这在 Spring AMQP 之外,但您可以在死信队列上配置 TTL,并配置 that 队列在过期时将死信返回原始队列。

如果您想在经过一定数量的重试周期后完全放弃,可以查看x-death 标头。

有关更多信息,请参阅this answer 及其问题。

【讨论】:

  • Gary 这很好用。由于实施了这一点,我们今天取得了一些成果,我想我会分享给您将来参考。我们的开发环境中有一个案例,MessageListener 一遍又一遍地出错。我们最终开始在 frame_too_large 的 RabbitMQ 中看到错误。经过研究,我们在 RabbitMQ 文档中发现,每次消息被死信时,都会将一个数组添加到您提到的 x-death 标头中。由于我们的解决方案设置了一个无限循环,因此消息变得太大并且最终爆炸了。未来的读者可能需要考虑最大重试次数。
  • @JoshChappelle 使用较新版本的代理,x-death 标头在每个访问的队列中仅包含一个条目,并且每次更新计数,而不是在每一轮中扩展标头。
  • 是的,我们已经升级了我们的代理,不再有这个问题。感谢您提及。
猜你喜欢
  • 2016-07-29
  • 2020-02-14
  • 1970-01-01
  • 2022-09-29
  • 2017-12-11
  • 2017-06-07
  • 2012-12-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多