RocketMQ 主要包括 Producer、Consumer 和 Broker,同时 Name Server 进行集群注册管理和保存元数据。
问题:怎么做能确保 RocketMQ 不丢失消息
https://zhuanlan.zhihu.com/p/596988137 4 张图,9 个维度告诉你怎么做能确保 RocketMQ 不丢失消息
Producer 发送消息:
根据返回的状态码,可以做消息重试,这里设置的重试次数是 3。
Broker 保存消息:
多副本和高可用
Consumer 消费消息:
消费成功,返回 CONSUME_SUCCESS,
Consumer 消费失败,这里有 3 种情况:
返回 RECONSUME_LATER
返回 null
抛出异常
Broker 收到这个响应后,会把这条消息放入重试队列,重新发送给 Consumer。
注意:
Broker 默认最多重试 16 次,如果重试 16 次都失败,就把这条消息放入死信队列,Consumer 可以订阅死信队列进行消费。
重试只有在集群模式(MessageModel.CLUSTERING)下生效,在广播模式(MessageModel.BROADCASTING)下是不生效的。
Consumer端一定要做好幂等处理。
Broker 主从切换
事务消息:
死信队列:
标签:Broker,重试,死信,消息,Consumer,RocketMQ From: https://www.cnblogs.com/clarino/p/17037750.html