Timeout of 60000ms expired before successfully committing offsets

来源:1-1 导学

mahsiaoko

2021-09-28

老师,您好!我使用spring-kafka写的consumer进行消费,在消费过程中经常出现上面的错误,这种情况下一般从哪些方面进行排查呢?
具体报的错误如下:

org.springframework.kafka.listener.ListenerExecutionFailedException: 
Listener method 'public void com.iscas.kafkaconsumer.controller.ConsumerBea.c2fv6(org.apache.kafka.clients.consumer.ConsumerRecords<java.lang.String, java.lang.String>,org.springframework.kafka.support.Acknowledgment)' threw exception;
 nested exception is org.apache.kafka.common.errors.TimeoutException: Timeout of 60000ms expired before successfully committing offsets {DNS-BEA-DNSC2F_V6-LOG-77=OffsetAndMetadata{offset=744489, leaderEpoch=null, metadata=''}}; 
 nested exception is org.apache.kafka.common.errors.TimeoutException: Timeout of 60000ms expired before successfully committing offsets {DNS-BEA-DNSC2F_V6-LOG-77=OffsetAndMetadata{offset=744489, leaderEpoch=null, metadata=''}}
	at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.decorateException(KafkaMessageListenerContainer.java:1641) ~[spring-kafka-2.3.0.RELEASE.jar!/:2.3.0.RELEASE]
	at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeBatchErrorHandler(KafkaMessageListenerContainer.java:1387) [spring-kafka-2.3.0.RELEASE.jar!/:2.3.0.RELEASE]
	at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.doInvokeBatchListener(KafkaMessageListenerContainer.java:1274) [spring-kafka-2.3.0.RELEASE.jar!/:2.3.0.RELEASE]
	at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeBatchListener(KafkaMessageListenerContainer.java:1179) [spring-kafka-2.3.0.RELEASE.jar!/:2.3.0.RELEASE]
	at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeListener(KafkaMessageListenerContainer.java:1162) [spring-kafka-2.3.0.RELEASE.jar!/:2.3.0.RELEASE]
	at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.pollAndInvoke(KafkaMessageListenerContainer.java:949) [spring-kafka-2.3.0.RELEASE.jar!/:2.3.0.RELEASE]
	at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.run(KafkaMessageListenerContainer.java:884) [spring-kafka-2.3.0.RELEASE.jar!/:2.3.0.RELEASE]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at java.lang.Thread.run(Thread.java:834) [?:?]
Caused by: org.apache.kafka.common.errors.TimeoutException: Timeout of 60000ms expired before successfully committing offsets {DNS-BEA-DNSC2F_V6-LOG-77=OffsetAndMetadata{offset=744489, leaderEpoch=null, metadata=''}}
[20:54:48:564] [ERROR] - org.springframework.core.log.LogAccessor.error(LogAccessor.java:254) - Error while processing:
写回答

1回答

Allen

2021-09-29

1、你这个错误大概率是客户端的错误, 提示的内容是自动提交十分钟都没成功, 可以考虑换成kafka的标准客户端

2、想排查可以看一下源码, 我没有你们的工程环境,不太好debug
3、我刚刚试验了几个版本, 没定位到这个错误, 你也可以考虑换成新版本试试有没有解决

4、我个人不建议你们使用Spring的kafka客户端,就会有很多莫名其妙的错误

0
2
Allen
回复
mahsiaoko
如果跟你群里说的一样,想直接启动就运行, 最简单的办法就是用ApplicatonRunner就可以了
2021-09-30
共2条回复

Kafka多维度系统精讲,从入门到实战开发

系统讲解Kafka,实战结合,让你成为使用Kafka的高手

896 学习 · 237 问题

查看课程