Kafka消息不丢失,不重复消费,保证顺序消费

16 篇文章 0 订阅

消息不丢失

生产者端

1.acks 参数设置为 all,强制要求写入所有 ISR 中的副本成功后才认为是成功
2.retries 参数设置为 Integer.MAX_VALUE,在出现一条消息发送失败之后,就一直重试直到成功为止。

消费端

1.关闭自动提交,即设置 enable.auto.commit 为 false,同时使用同步提交及在代码中使用
commitOffsetsSync 函数按照 offset 的维度进行消息提交。

服务端

1.设置 log.flush.interval.messages 参数为 1,也就是每写入一条消息就强制刷盘。默认情况下 kafka 是不控制刷盘的,交给 OS 去控制。
2.设置 Topic 的副本数至少大于等于 2,通常情况下是默认为 3。

消息不重复

1.基于 DB 的唯一键,我们可以通过消息的内容拼成一个唯一的 key。然后创建一个幂等表,其中可以就两列 <id, key>,其中设置 key 列为唯一键。每次进行消息的业务处理前,进行幂等判断,也就是朝表中插入一个
key,如果报了对应的违反唯一性的异常,那么就跳过该消息的处理。
2.基于缓存,实现原理跟用 DB 基本一致,不过可以修改为判断 key 是否存在于缓存中,如果存在则跳过否则存入后再进行业务处理。

顺序消费

1.1个Topic(主题)只创建1个Partition(分区),这样生产者的所有数据都发送到了一个Partition(分区),保证了消息的消费顺序。
2.发送消息保证同步发送,不能异步发送。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值