首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring RabbitMQ -消息重新队列限制

Spring RabbitMQ -消息重新队列限制
EN

Stack Overflow用户
提问于 2017-01-07 17:36:08
回答 1查看 2.9K关注 0票数 0

使用Spring和Spring amqp作为我的消息应用程序。我的问题是:

First Problem:我只想请求我的消息5次,如果发生业务异常,消息就应该从队列中释放出来(这里我只关注业务异常)。

第二个问题:如果第一个用例是可能的,我们可以在尝试的基础上以某种方式增加请求的时间吗?假设在第一次尝试中发生业务异常,它应该立即请求,但是在第二次尝试中,应该在2分钟之后,然后4分钟,然后6分钟,然后8分钟,然后10分钟,时间将根据尝试增加。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2017-01-08 15:04:55

对于简单的情况(尝试之间的固定延迟),您可以配置队列以发送已拒绝的消息(一个死信交换),并抛出AmqpRejectAndDontRequeueException

将队列绑定到死信交换,并在该队列上设置存活时间(ttl),并将其配置为原始队列绑定到的死信交换。该消息将在TTL过期后重新请求。

您需要检查x-death头,以确定消息在循环中遍历了多少次。重试用完后,抛出一个ImmediateAcknowledgeAmqpException以丢弃该消息。

对于可变延迟,您必须自己重新发布消息,到延迟消息交换(有一个代理插件),每次重试的延迟都会增加。

也见this answer

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41524419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档