CommonErrorHandler 不存在于 kafka spring 中?

WIS*_*SHY 0 spring spring-mvc apache-kafka spring-boot spring-kafka

我创建了一个简单的卡夫卡消费者

@EnableKafka
@Configuration
public class KafkaConsumerConfig {

@Bean
public ConsumerFactory<String, String> consumerFactory() {
    Map<String, Object> props = new HashMap<>();
    props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "127.0.0.1:9092");
    props.put(ConsumerConfig.GROUP_ID_CONFIG, "group_id");
    props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG,StringDeserializer.class);
    props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG,StringDeserializer.class);
    return new DefaultKafkaConsumerFactory<>(props);
}

@Bean
public ConcurrentKafkaListenerContainerFactory<String, String> 
  kafkaListenerContainerFactory() {
    ConcurrentKafkaListenerContainerFactory<String, String> factory =
      new ConcurrentKafkaListenerContainerFactory<>();
    factory.setConsumerFactory(consumerFactory());
    return factory;
}
}
Run Code Online (Sandbox Code Playgroud)

这是卡夫卡消费者

@Component
public class KafkaConsumer {

@KafkaListener(topics = "NewTopic", groupId = "group_id")
public void consume(String message) {
    System.out.println("message = " + message);
}
}
Run Code Online (Sandbox Code Playgroud)

当我运行应用程序时出现以下错误

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.boot.autoconfigure.kafka.KafkaAnnotationDrivenConfiguration': Unexpected exception during bean creation; nested exception is java.lang.TypeNotPresentException: Type org.springframework.kafka.listener.CommonErrorHandler not present
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:555) ~[spring-beans-5.3.21.jar:5.3.21]
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.21.jar:5.3.21]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.21.jar:5.3.21]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.21.jar:5.3.21]
Run Code Online (Sandbox Code Playgroud)

Art*_*lan 10

这就是版本兼容性的问题。

请考虑不要覆盖spring-kafka版本,而是依赖 Spring Boot 为我们提供的内容。

自 Spring for Apache Kafka 以来就已CommonErrorHandler引入2.8。根据5.3.21日志中 Spring Framework 的版本,看起来您使用的是 Spring Boot 2.6.x 甚至2.7.x. 但与此同时,您使用旧的 Spring for Apache Kafka 版本,并且确实使用显式版本。