kafka发布消息怎样达到不重不漏
感谢邀请。
【kafka发布消息怎样达到不重不漏】 Producer端去重的一种方法,是使用类似idempotent producer的方法:每个消息自带一个sequence number,在server端记录每一个当前producer的最新sequence number,当收到重复sequence number的消息的时候自动过滤。细节可以参见:Idempotent Producer 。
可以看出来producer端去重比起consumer端去重要复杂很多,因为其实是要靠server自己去重,自己实现很麻烦,所以如果能够在consumer端去重最好还是不要在produer端。在最新的KIP98(exactly-once)里面我们打算在Kafka内部实现这个机制:
KIP-98 - Exactly Once Delivery and Transactional Messaging
一切顺利的话今年六月份的release应该就会有这个feature,到时候Kafka就可以支持exactly-once semantics, 用户自己不再需要去重了。
■网友
你好。
要看生产者是什么吧, 如果是数据库那天然就没有问题。
■网友
目前kafka 0.11.0以上版本已经提供对exactly once的支持。
0.11.0以下版本,需要自己处理。
Producer端:因为producer端是批量发送方式,因此需要进行幂等校验,就是发送端每次发消息带一个sequenceId,接收端进行校验,重复的丢弃掉。
Consumer端:需要自己管理offset,也就是对消息的消费和offset的保存绑定为一个事务。
也么offset保存成功,消息消费成功,要么都失败,具体的可以见官方HDFS的例子。
推荐阅读
- 江苏高考■江苏省发布《2021年普通高校招生考试安排和录取工作实施方案》
- 地区:局部地区将有暴雪 江苏发布低温报告和大风警报
- “厉行节约反对浪费”主题设计公益活动成果发布
- 北京发布寒潮蓝色预警:最低气温下降8℃以上
- 注意防范!北京发布大风蓝色预警信号
- 甘肃发布冷链食品防控指南:冷链从业人员每周一次核酸检测
- 长三角高质量一体化发展指数发布
- 绕行■南京警方发布国家公祭日交通绕行提示
- ■个税扣缴新方式来了!对年收入不超过6万元的人来说是个好消息
- 成都大运会:残疾人公益手作大运特许商品正式发布
