关于在 Java 调用 Kafka 的 ConsumerAPI 之后无法消费的问题 [‘consumer‘ has raw type, so result of poll is erased ]

601-赵同学

发表文章数:191

热门标签

, , ,
首页 » 大数据 » 正文

记录一下工作中遇到的关于 Kafka 的问题,具体工作流程是 Mysql 通过 DataX 同步到 Kafka 中,再通过 DataX 把 Kafka 的数据同步到 Elasticsearch,大概就是下图的一个流程:
关于在 Java 调用 Kafka 的 ConsumerAPI 之后无法消费的问题 [‘consumer‘ has raw type, so result of poll is erased ]
执行任务发现可以读取到 Mysql 的数据,自己在控制台用命令行消费自动创建的 Topic 也可以消费到数据,但是 Java API 中 consumer.poll 之后的 records 是空的,没有拿到任何数据,并且 IDEA 给出了一个警告:

Unchecked assignment: ‘org.apache.kafka.clients.consumer.ConsumerRecords’ to ‘org.apache.kafka.clients.consumer.ConsumerRecords<java.lang.String,java.lang.String>’. Reason: ‘consumer’ has raw type, so result of poll is erased

大致意思应该是说 Consumer 是有自己的原始类型,如果没有指定就会把 poll 的结果擦除。经过排查代码发现

KafkaConsumer consumer = new KafkaTool(kafkaBootstrapServers, groupid, topic).getKafkaConsumer();

自己写的 KafkaTool 的返回的 KafkaConsumer 没有 <K,V> 类型,修改以后就可以成功跑通

KafkaConsumer<String,String> consumer = new KafkaTool(kafkaBootstrapServers, groupid, topic).getKafkaConsumer();

但是虽然问题解决了,疑问点有两个:
1.我看源码没有看到 KafkaConsumer 的原始 <K,V> 类型,这里不清楚
2.同事写完代码在他本地可以执行,而在我的本地出现了这个问题,为什么他不会受这个问题困扰,Kafka 的版本是一致的
这两个问题还需要继续钻研,如果有了解的大佬希望能请教一下!

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录