- 顺序消息的重试
顺序消息消费失败后,rocketMq会进行不断地重试(1秒),所以使用顺序消息要保证及时监控,避免阻塞现象发生
- 无序消息的重试
无序消息消费失败时,是可以设置返回状态的。无序消息的重试只针对集群模式,广播模式不会进行重试
- 重试次数
默认情况下,总共16次,会进入死信队列,如果配置大于16次,则时间间隔是2小时,下面是表示间隔时间:
注意:重试时messageId不会变化
- 配置方式
消息消费失败,重试配置方式,推荐方式1
- 死信队列
当超过最大重试测试仍然还无法消费时,消息会进入死信队列,而消息称为死信消息
- 死信消息特点
- 无法被正常消费
- 有效期和正常消息相同,3天自动删除
- 死信队列特点
- 一个死信队列对应一个GroupId,而不是单个消费者实例
- 如果GroupId未产生死信消息,则该GroupId不会产生死信队列
- 一个死信队列包括GroupId的所有消息,而不管属于哪个Topic
- 消息幂等性处理
消费方多次消费相同消息,他们结果要保证一致
- 消息幂等的必要性
- 发送时重复:消息发送并处理成功,但客户端没有接收到响应,引起生产者重复发送消息
- 投递时重复(消费):消费者接收到消息并处理成功,但服务器没有接收到响应,引起服务器重复发送消息
- 负载均衡时重复:但Broker或客户端发生重启,扩容,缩容,会除非rebalance,消费者会重复接收到消息
- 处理方式
使用业务唯一标识作为消息key进行处理