【问题标题】:Spring Kafka cannot find Kafka Properties BeanSpring Kafka 找不到 Kafka Properties Bean
【发布时间】:2020-10-22 12:04:52
【问题描述】:

我正在尝试在我的项目中使用 Spring Kafka,其中 Spring Boot 版本是 2.2.2.RELEASE,kafka 版本是 2.3.x。

    implementation 'org.springframework.kafka:spring-kafka'

我有我的 KafkaConfig 类和 Listener 类设置:

@EnableKafka
@Configuration
public class KafkaConfig {
Config cfg = new Config();


@Bean
public ConsumerFactory<String, String> consumerFactory() {
Map<String, Object> props = new HashMap<>();
props.put(
    ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG,
    cfg.getProperty("server"));
props.put(
    ConsumerConfig.GROUP_ID_CONFIG,
    UUID.randomUUID());
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;
}
}

KafkaConsumer.java

@Service
public class KafkaConsumer {
private final Logger LOG = LoggerFactory
  .getLogger(KafkaConsumer.class);

@KafkaListener(topics = "anomaly-topic")
void listener(String message) {
LOG.info("Listener [{}]", message);
}
}

当我尝试运行我的应用程序时,我遇到了以下异常:

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.boot.autoconfigure.kafka.KafkaAnnotationDrivenConfiguration': Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'spring.kafka-org.springframework.boot.autoconfigure.kafka.KafkaProperties': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.autoconfigure.kafka.KafkaProperties]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/apache/kafka/common/requests/IsolationLevel
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:798) ~[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE]

【问题讨论】:

    标签: java spring-boot apache-kafka spring-kafka


    【解决方案1】:

    我发现解决方案是禁用 KafkaAutoConfiguration.class,

    @SpringBootApplication(exclude = KafkaAutoConfiguration.class)
    

    【讨论】:

      【解决方案2】:

      我也遇到了同样的情况,原因是因为我有以下库:

      implementation(group="io.confluent", name="kafka-avro-serializer", version="5.5.1")
      

      它带有自己的kafka-clients,版本为5.5.1-ccs,正在被提取并导致兼容性问题。

      我使用Spring Dependency Management解决了这个问题:

      plugins {
          id("org.springframework.boot") version "2.2.2.RELEASE"
          id("io.spring.dependency-management") version "1.0.9.RELEASE"
      }
      

      然后运行gradle clean

      【讨论】:

      • 感谢 Yayotron 的回答,就我而言,我不得不禁用 KafkaConfiguration 类。感谢您的回答,祝您有愉快的一天。
      猜你喜欢
      • 1970-01-01
      • 2020-10-09
      • 2020-11-09
      • 2019-05-27
      • 2020-12-22
      • 1970-01-01
      • 2019-06-26
      • 2023-03-31
      • 2018-04-28
      相关资源
      最近更新 更多