消费重试 | RocketMQ
重试状态机

- Ready:已就绪状态。消息在Apache RocketMQ服务端已就绪,可以被消费者消费。
- Inflight:处理中状态。消息被消费者客户端获取,处于消费中还未返回消费结果的状态。
- WaitingRetry:待重试状态,PushConsumer独有的状态。当消费者消息处理失败或消费超时,会触发消费重试逻辑判断。如果当前重试次数未达到最大次数,则该消息变为待重试状态,经过重试间隔后,消息将重新变为已就绪状态可被重新消费。多次重试之间,可通过重试间隔进行延长,防止无效高频的失败。
- Commit:提交状态。消费成功的状态,消费者返回成功响应即可结束消息的状态机。
- DLQ:死信状态。消费逻辑的最终兜底机制,若消息一直处理失败并不断进行重试,直到超过最大重试次数还未成功,此时消息不会再重试,会被投递至死信队列。您可以通过消费死信队列的消息进行业务恢复。
重试间隔
http云版本应该是5分钟一次,可以调整
下面是正常版本,超过进入死信队列
无序消息(非顺序消息):重试间隔为阶梯时间,具体时间如下:
| 第几次重试 |
与上次重试的间隔时间 |
第几次重试 |
与上次重试的间隔时间 |
| 1 |
10秒 |
9 |
7分钟 |
| 2 |
30秒 |
10 |
8分钟 |
| 3 |
1分钟 |
11 |
9分钟 |
| 4 |
2分钟 |
12 |
10分钟 |
| 5 |
3分钟 |
13 |
20分钟 |
| 6 |
4分钟 |
14 |
30分钟 |
| 7 |
5分钟 |
15 |
1小时 |
| 8 |
6分钟 |
16 |
2小时 |
信息
若重试次数超过16次,后面每次重试间隔都为2小时。