Kafka消费不到数据的特殊情况

Posted Sylvia小伊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kafka消费不到数据的特殊情况相关的知识,希望对你有一定的参考价值。

我大约是把kafka消费不到数据的特殊情况都经历了一遍了吧= =、

kafka消费不到数据的原因,首先检查配置之类的,如是否设置了group.id,对应的topic是否正确等等,这些不多说。

下面是我遇到的几种kafka消费不到数据的情况:

1.多分区,设置了topic但是没有设置分区及offset

解决办法:

consumer.Assign(new List<TopicPartitionOffset>(){ new TopicPartitionOffset(new TopicPartition("topic", 1), Offset.Stored) });

 

2.长时间不消费导致 log.retention.hours或者 log.retention.minutes超时,清除log,Offset.Stored失效

解决办法一:

consumer.Assign(new List<TopicPartitionOffset>(){ new TopicPartitionOffset(new TopicPartition("topic", 1), new Offset(index)) });

此处的index为该分区当前的offset, 要手动配置,可测试用。

解决办法二:见问题三,同样解决方式

 

3.我一次加数据太多导致磁盘耗尽,kafka管理员帮我改到20G内存,但是仍然有一部分数据超出,分区offset靠前的数据被清除,导致再次消费不到。

解决办法:同上述Offset.Stored的解决办法二

consumer.Assign(new List<TopicPartitionOffset>(){ new TopicPartitionOffset(new TopicPartition("topic", 1), Offset.Beginning) });

或者在配置中加

auto.offset.reset=smallest //.NET 默认是largest
auto.offset.reset=earliest//Java 默认是latest

 

关于该配置的测试,请看下面的链接

http://blog.csdn.net/lishuangzhe7047/article/details/74530417

以上是关于Kafka消费不到数据的特殊情况的主要内容,如果未能解决你的问题,请参考以下文章

Kafka某topic无法消费解决方案&Kafka某Topic数据清理

Kafka-文件管理

kafka消费组消费主题

kafka消费者java版本读取不到消息怎么办

Spark消费Kafka如何实现精准一次性消费?

kafka通过控制台模拟消息发送和消息接收正常,但是通过javaAPI操作生产者发送消息不成功 消费者接收不到数据解决方案?