措施RocketMQ保证高可用和高性能的几种措施( 二 )


无序消息的重试 当消费模式为集群模式时 , Broker才会自动进行重试 , 对于广播消息是不会进行重试的
当consumer消费消息后返回ConsumeConcurrentlyStatus.CONSUME_SUCCESS表明消费消息成功 , 不会进行重试
当consumer符合如下三种场景之一时 , 会对消息进行重试

  1. 返回ConsumeConcurrentlyStatus.RECONSUME_LATER
  2. 返回null
  3. 抛出抛出异常
RocketMQ默认每条消息会被重试16次 , 超过16次则不再重试 , 会将消息放到死信队列 ,
每次重试的时间间隔如下
措施RocketMQ保证高可用和高性能的几种措施
本文插图
重试队列和死信队列 当消息消费失败 , 会被发送到重试队列
当消息消费失败 , 并达到最大重试次数 , rocketmq并不会将消息丢弃 , 而是将消息发送到死信队列
死信队列有如下特点
  1. 里面存的是不能被正常消费的消息
  2. 有效期与正常消息相同 , 都是3天 , 3天后会被删除
重试队列的命名为 %RETRY%消费组名称 死信队列的命名为 %DLQ%消费组名称
一个死信队列包含了一个group id产生的所有消息 , 不管当前消息处于哪个topic 。 重试队列和死信队列只有在需要的时候才会被创建出来

措施RocketMQ保证高可用和高性能的几种措施
本文插图
【措施RocketMQ保证高可用和高性能的几种措施】


推荐阅读