当前位置:   article > 正文

使用 Kafka 如何保证消息不重复消费_kafka如何保证消息不被重复消费

kafka如何保证消息不被重复消费


虽然说的是kafka,但是其实其他消息中间件也有这个问题。可以一起参考下面的方案。

kafka出现消息重复消费的原因:

1、服务端侧已经消费的数据没有成功提交 offset(根本原因)。
2、Kafka 侧 由于服务端处理业务时间长或者网络链接等等原因让 Kafka 认为服务假死,触发了分区 rebalance。

解决方案

1、消费消息服务做幂等校验,比如 Redis 的set、MySQL 的主键等天然的幂等功能。这种方法最有效。

2、将 enable.auto.commit 参数设置为 false,关闭自动提交,开发者在代码中手动提交 offset。那么这里会有个问题:什么时候提交offset合适?
处理完消息再提交:依旧有消息重复消费的风险,和自动提交一样
拉取到消息即提交:会有消息丢失的风险。允许消息延时的场景,一般会采用这种方式。然后,通过定时任务在业务不繁忙(比如凌晨)的时候做数据兜底。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/543382
推荐阅读
相关标签
  

闽ICP备14008679号