kafka-1-消费者consumer无法消费的异常

 

(1)异常现象

服务器:record is corrupt(记录损坏)不明原因,有可能磁盘空间不足导致,导致消费者无法正常消费消息,卡在某一个offset不能继续消费。

(2)解决办法

先停掉消费者程序,杀掉进程(不可关闭kafka服务)然后手动设置偏移量,跳过卡在的offset位置。

进入kafka目录,命令:

bin/kafka-consumer-groups.sh --bootstrap-server ip:9092 --group groupName --reset-offsets --to-offset 1000 --topic topicName --execute

然后重启消费者程序

(3)举例

查看特定consumer group 详情,使用--group与--describe参数

# kafka-consumer-groups.sh  --bootstrap-server hbak1:9092 --group consumer1 --describe

kafka-1-消费者consumer无法消费的异常

 

分区2,当前偏移量为2

分区1,当前偏移量为0

分区0,当前偏移量为13

(3-1)设为offset10

# kafka-consumer-groups.sh --bootstrap-server hbak1:9092 --group consumer1 --re                                     set-offsets --to-offset 10 --topic zb --execute

(3-2)设为offset0
# kafka-consumer-groups.sh --bootstrap-server hbak1:9092 --group consumer1 --re                                     set-offsets --to-offset 0 --topic zb --execute
 

 

kafka-1-消费者consumer无法消费的异常

 

从图中可以看出,如果设置偏移量为10。

分区2,偏移量会被设置为2

分区1,偏移量会被设置为0

(3-3)然后运行如下的程序,就会从偏移量位置开始消费了

from kafka import KafkaConsumer

consumer = KafkaConsumer('zb', bootstrap_servers=['IP:9092'],group_id = "consumer1")
for msg in consumer:
    print((msg.value).decode('utf8'))