【RocketMQ每日一问】RocketMQ如何保证消息不丢失?
发布时间:2024年01月07日
1.生产端
- 不要使用oneway方式发送,因为这种方式不会有返回结果
- 设置重试次数
- 发送失败添加回调对消息进行处理
2.broker端
- 开启同步刷盘flushDiskType = SYNC_FLUSH ,这样在刷盘失败的时候会返回SendStatus.FLUSH_DISK_TIMEOUT
- 开启主从同步复制,brokerRole=SYNC_MASTER,这样在从写失败的情况下会返回SendStatus.FLUSH_SLAVE_TIMEOUT
## master 节点配置
flushDiskType = SYNC_FLUSH
brokerRole=SYNC_MASTER
## slave 节点配置
brokerRole=slave
flushDiskType = SYNC_FLUSH
3.消费端
RocketMQ在消息消费时采用了ACK机制,即消息客户端从Broker拉取消息到消费端,只有消息消费端成功将消息消费,才会发送ACK到Broker,broker才会认为该消息消费成功,保证消息不丢失。而且消息在消费时,是采取最小位点提交机制?(会导致重复消费,所以同样要消费端幂等)
文章来源:https://blog.csdn.net/jianjun_fei/article/details/135415711
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:chenni525@qq.com进行投诉反馈,一经查实,立即删除!