栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【HBZ分享】MQ如何保证消息不丢失?

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【HBZ分享】MQ如何保证消息不丢失?

避免消息丢失从哪方面进行防御?
  1. 生产者producer端
  2. 服务器broker端
  3. 消费者consumer端
生产者producer端如何保证消息不丢失? Rabbitmq:
  1. rabbitmq有两个Callback函数,分别是【生产者–>Exchange】【Exchange–>队列】,通过回调函数来保证消息投递到交换机与队列中
  2. 确保消息发送成功后,并成功刷到磁盘保存,则可以确保不丢失
Kafka:
  1. 通过ACK机制: ACK = 0 ,1, all
    ack = 0 : 只要消息发送成功,则返回成功
    ack = 1 : 消息发送成功,并且Leader成功落盘,则返回成功
    ack = 2 : 消息发送成功,并且Leader 与 Follow同时成功落盘,则返回成功
Kafka 与 Rabbitmq都需要做的:
  1. 做好消息发送日志,记录关键字段,【投递时间, 投递状态, 重试次数, 请求体, 响应体】等。
服务器broker端如何保证消息不丢失?
  1. 做集群处理,确保某个服务器宕机不会影响
  2. 做异地容灾,同城容灾,两地三中心等
  3. 同步双写, 异步刷盘。
    同步双写 = 即master 与 slave都已经同步到内存,然后返回成功。
    异步刷盘 = 所有节点落盘是异步的,当然如果为了绝对安全,可以同步刷盘,但会损失性能
消费者consumer端如何保证消息不丢失?
  1. 做好日志采集,方便日后排查
  2. 通过ACK机制,kafka与rabbitmq都是通过ack机制的
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/978999.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号