RocketMq对于消费者对于消息的如何处理的

RocketMq对于消费者对于消息的如何处理的

1:如果设置了自动提交

返回:

ConsumeOrderlyStatus.COMMIT, ConsumeOrderlyStatus.ROLLBACK, ConsumeOrderlyStatus.SUCCESS , 返回者三种状态都是会提交offset,

但是返回ConsumeOrderlyStatus.SUSPEND_CURRENT_QUEUE_A_MOMENT 会校验是否重试。达到重试次数(达到设定的重试次数会投递到重试队列,见下文)还是失败也会提交offest;

image2022-1-23_16-55-46

2:如果是非自动提交:

只有返回commit才会提交offest,返回其他的状态都不会commit offest

返回:SUSPEND_CURRENT_QUEUE_A_MOMENT 需要重试的时候是不会继续消费,达到重试次数也不会提交offest。

image2022-1-23_16-56-20

判断方法主要获取最大的重试次数和当前消息的重试次数对比,如果达到了最大的重试次数就是执行 sendMessageBack 方法。这个方法将消息发送到重试队列中,稍后进行重试(还是失败及时投递到死信DLQ队列中)

发送失败,消息会继续重试。

如果当前重试次数小于最大重试次数,则继续阻塞重试。

image2022-1-23_16-56-41

这个是获取最大重试次数的方法,当没有设置重试次数 (默认 -1) 就重试Integer的最大值。否则以设定为准。

下面这段逻辑是达到重试次数后投递到重试队列的逻辑。

image2022-1-23_16-8-50

重试队列的topic:%RETRY%+{消费者组的名称}

顺序消息消费种对于顺序强要求的,需要消费失败阻塞消费的,可以设置非自动提交,然后捕获异常,只有消费成功才进行commit;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值