Kafka二十三Kafka优化之防止消息丢失和重复消费
Posted BirdMan98
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kafka二十三Kafka优化之防止消息丢失和重复消费相关的知识,希望对你有一定的参考价值。
Kafka优化之防止消息丢失和重复消费
如何防止消息丢失
- ⽣产者:1)使⽤同步发送 2)把ack设成1或者all,并且设置同步的分区数>=2
- 消费者:把⾃动提交改成⼿动提交
如何防止重复消费
在防⽌消息丢失的⽅案中,如果⽣产者发送完消息后,因为⽹络抖动,没有收到ack,但实际上broker已经收到了。
此时⽣产者会进⾏重试,于是broker就会收到多条相同的消息,⽽造成消费者的重复消费。
怎么解决:
- ⽣产者关闭重试:会造成丢消息(不建议)
- 消费者解决⾮幂等性消费问题:
所谓的幂等性:多次访问的结果是⼀样的。对于rest的请求(get(幂等)、post(⾮幂等)、put(幂等)、delete(幂等))
解决⽅案:- 在数据库中创建联合主键,防⽌相同的主键创建出多条记录
- 使⽤分布式锁,以业务id为锁。保证只有⼀条记录能够创建成功
以上是关于Kafka二十三Kafka优化之防止消息丢失和重复消费的主要内容,如果未能解决你的问题,请参考以下文章