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