rabbimq消费者实现异常重试机制

本文介绍了RabbitMQ消费者实现异常重试机制,通过死信队列和延迟队列来保证数据一致性。详细阐述了重试策略的原理、参数设置,并提到了需要注意的动态修改延迟重试时间和集群环境下的限制问题。
摘要由CSDN通过智能技术生成

功能描述

异常重试指的是当消费者处理消息异常失败时,为保证数据最终一致性,通过设置重试策略来对消息进行重复再消费。对于重试策略我们指定延迟多长时间重试一次,重试多少次,以及时间单位等。

策略描述

原理:利用rabbitmq的死信原理,参照上一篇文章rabbimq队列之死信队列和延迟队列

参数:TimeUnit(延迟时间单位),retryDelayTime(long型,失败后过多久的时间执行),retries(int型,重试次数)

原理图:


其中,有几个点需要说明一下

1.normal_exchange_delay和normal_queue_delay是死信队列,设置了队列属性x-message-ttl的属性,即指定了延时时间,达到x-message-ttl设置的时间未消费的就会自动路由到normal_exchange_requeue交换器,从而实现了延迟重试。这里需要解释的是为什么要重新创建一个新的交换器normal_exchange_requeue:因为当你的normal_exchange绑定多个队列,且是topic类型的交换器时,如果你的死信队列指定的死信交换器是该交换器,消息存在发送到多个队列的风险,会对别的系统造成重复消费。

2.max retry如何获取,rabbitmq有一个属性,就是当一个消息

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值