分享

求助!关于kafka发送数据丢失的问题

jnhcd 发表于 2017-1-17 14:55:38 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 2 16186
kafka版本为Kafka 0.10.0
在看kafka的官方文档时,javadoc介绍的producer和consumer都没问题(默认num.partitioner=1)。

但是在使用多分区(num.partitioner=3)时,producer发布数据,未报错。在consumer订阅数据时,发现丢失大概一半数据。

刚开始以为是分区订阅数据丢失问题,后来使用kafka自带的kafka-console-consumer.sh消费数据,数据还是丢失。

请问各位大大,这是什么问题?

已有(2)人评论

跳转到指定楼层
jnhcd 发表于 2017-1-17 15:40:07
不好意思,问题找到了

producer的send方法是异步的,因此没有报错

将send的返回值Future定义,调用future.get()等待方法执行完毕的结果,这时候就报错了,
发现时因为num.partitioner=3,而在自定义Partitioner实现partition方式的时候,分区数使用了6,之前分区数是6,后来改回3了,int result = Math.abs(key.hashCode()) % numPartitioners的结果超过了0,1,2,因此报错了
回复

使用道具 举报

einhep 发表于 2017-1-17 15:46:03
jnhcd 发表于 2017-1-17 15:40
不好意思,问题找到了

producer的send方法是异步的,因此没有报错

对的,分区可能造成这个问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条