使用Spring-kafka的@KafkaListener报错信息Listener method could not be invoked with the incoming message

使用Spring-kafka的@KafkaListener报错信息Listener method could not be invoked with the incoming message

  • 问题背景
  • 报错原因
  • 解决办法

问题背景

先说一下背景,我在写一个kafka消费项目的时候,为了方便就用的spring-kafka依赖包,启动项目报了这个错,百度好几遍都没找到解决办法,后面再stack overflow找到答案了,在此记录一下,错误如下:
使用Spring-kafka的@KafkaListener报错信息Listener method could not be invoked with the incoming message_第1张图片
我个人觉得这个错误信息很关键:

Listener method could not be invoked with the incoming message

还有一个错误是非常关键的:

Endpoint handler details:
Method [public void com.kingdee.finance.kafka.consumer.handler.AckConsume.onMessage(org.apache.kafka.clients.consumer.ConsumerRecord,org.springframework.kafka.support.Acknowledgment)]

再来看看我的消费者是怎么写的,比较简单,直接@KafkaListener注解和实现AcknowledgingMessageListener接口类
使用Spring-kafka的@KafkaListener报错信息Listener method could not be invoked with the incoming message_第2张图片

报错原因

在消费端并不支持使用Acknowledgment作为接收参数,要使用ack模式的话,配置文件也要设置相应的ack-mode,所以最后的原因就是没有设置相应的ack-mode。

解决办法

在配置文件yml中设置ack策略,设置为manual或者manual_immediate,问题解决!
使用Spring-kafka的@KafkaListener报错信息Listener method could not be invoked with the incoming message_第3张图片

参考链接:https://stackoverflow.com/questions/44788188/acknowledgement-acknowledge-throwing-exception-in-spring-kafka-kafkalistener

你可能感兴趣的:(springboot,java)