当前位置:   article > 正文

Kafka消息不丢失,不重复消费,保证顺序消费_kafka如何保证不重复消费又不丢失数据

kafka如何保证不重复消费又不丢失数据

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

消息不丢失

生产者端

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

消费端

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

服务端

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

消息不重复

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

顺序消费

1.1个Topic(主题)只创建1个Partition(分区),这样生产者的所有数据都发送到了一个Partition(分区),保证了消息的消费顺序。
2.发送消息保证同步发送,不能异步发送。
  • 1
  • 2
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/543376
推荐阅读
相关标签
  

闽ICP备14008679号