卡夫卡| Kafka消费者挂在Consumer.poll()|提取数据时出现意外的错误代码2

时间:2018-07-09 07:23:28

标签: java apache-kafka kafka-consumer-api

我们的Kafka消费者面临间歇性问题。一段时间后,它停留在consumer.poll(100)方法上,并开始抛出以下异常:

  

获取数据时出现意外错误代码2   org.apache.kafka.clients.consumer.internals.Fetcher.parseCompletedFetch(Fetcher.java:891),   org.apache.kafka.clients.consumer.internals.Fetcher.fetchedRecords(Fetcher.java:528),   org.apache.kafka.clients.consumer.KafkaConsumer.pollOnce(KafkaConsumer.java:1154),   org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:1111)

以下是配置-

props.put("auto.offset.reset", "latest");
props.put("group.id", "testGroup");
props.put("enable.auto.commit", "false");
props.put("auto.commit.interval.ms", "1000");
props.put("session.timeout.ms", "30000");
props.put("key.deserializer", 
"org.apache.kafka.common.serialization.StringDeserializer");
props.put("value.deserializer", 
"org.apache.kafka.common.serialization.StringDeserializer");
props.put("max.poll.records", "10");
props.put("metadata.max.age.ms", "10000");

重新启动该问题后,该问题似乎已得到暂时解决。但是过了一段时间,它又被卡住了。

可以与最大投票记录相关吗?如果10条记录的大小大于默认的1MB,那么它会导致使用者挂起吗?

1 个答案:

答案 0 :(得分:0)

当消息已损坏或超过有效大小时,将出现错误代码2。

请参考以下链接以获取有关错误代码的参考:https://kafka.apache.org/protocol#protocol_error_codes

因此,可以,它可以与max.poll.records相关。减小最大轮询记录值或将默认记录大小从1 MB增加。

此外,属性 max.poll.records 具有一个Int类型的值。您给定了String类型的值。也尝试更改它。