RockeyMQ的发送状态

 

 

SEND_OK:消息正常发送成功


FLUSH_DISK_TIMEOUT:没有在规定的时间内完成刷盘,这种状态在同步刷盘中会出现,假设请求进来,先同步内存,在同步磁盘,同步时间设置了3秒,在规定时间内没有完成,就会返回这种状态,异步刷盘不会,内存同步完后直接就返回成功了


FLUSH_SLAVE_TIMEOUT :在主从模式下才会会出现这种状态,假设CUP爆满,主从节点来不及同步.


SLAVE_NOT_AVAILABLE : 在从模式下,brokey是YNC_MASTER,同步双写,但如果从节点宕机了,主节点没有找到配置的从节点,返回这种状态.




2:生产和消费的重试机制:

 

 

 

  product方发送到broker时,由于broker宕机了或者网络情况比较差的时候,进行重入机制,

  consumer去broker拉取消息的时候,或者处理完后返回状态时,broker宕机了进入重试机制

 

product默认重试机制为2

 

 

设置重试次数

defaultMQProducer.setRetryTimesWhenSendFailed(0);

 

 

 

comsumer 端重试机制

 

int reconsumeTimes = messageExt.getReconsumeTimes();

 

 

 

判断重试几次后不再重试,

 

 

 1 消费端重试可能消息会被重复消费,这个可以通过代码去判断,比如把keys保存到redis中,设置过期时间,消费时去判断是否被消费过

 2 一条消息无论被重试多少次,这些重试的消息的MassageID ,key都不会变的

 3 消费者集群只针对即系消费方式有效的,广播方式不提供失败重试的特性,失败后不进行消息重试,继续消费新的消息

 

defaultMQPushConsumer.setMessageModel(MessageModel.BROADCASTING);

猜你喜欢

转载自www.cnblogs.com/HuangXingLei/p/12612090.html