面试题答案
一键面试消息重试机制的触发
- 消费者端异常:当消费者在消费消息时,若出现未捕获的异常(比如业务代码逻辑错误、数据库连接异常等),RocketMQ 会认为该消息消费失败,从而触发消息重试。
- 手动返回消费状态:消费者在消费消息的回调方法中,手动返回
ConsumeConcurrentlyStatus.RECONSUME_LATER
状态,也会触发消息重试,表明当前消息需要稍后重新消费。
默认重试策略
- 重试次数:默认情况下,一条消息消费失败后,会进行 16 次重试。
- 重试间隔:重试间隔随着重试次数增加而逐渐变长,第一次重试间隔为 10 秒,第二次为 30 秒,第三次为 1 分钟,第四次为 2 分钟,第五次为 3 分钟,第六次为 4 分钟,第七次为 5 分钟,第八次为 6 分钟,第九次为 7 分钟,第十次为 8 分钟,第十一次为 9 分钟,第十二次为 10 分钟,第十三次为 20 分钟,第十四次为 30 分钟,第十五次为 1 小时,第十六次为 2 小时。