java - 创建名为“kafkaListenerContainerFactory”的 bean 时出错
问题描述
我是 kafka、springboot 的新手,并试图在我的 springboot 应用程序中集成 kafka 和弹性搜索。
当我尝试运行 springboot 应用程序时,我看到以下错误:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'kafkaListenerContainerFactory' defined in class path resource [org/springframework/boot/autoconfigure/kafka/KafkaAnnotationDrivenConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory]: Factory method 'kafkaListenerContainerFactory' threw exception; nested exception is java.lang.NoSuchMethodError:org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory.getContainerProperties()Lorg/springframework/kafka/listener/config/ContainerProperties;
我的 pom.xml
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
<version>2.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>4.1.0</version>
</dependency>
应用程序.yml
security:
enabled: true
spring:
resources:
chain:
enabled: true
kafka:
consumer:
bootstrap-servers: localhost:9092
group-id: group-id
auto-offset-reset: earliest
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
producer:
bootstrap-servers: localhost:9092
key-serializer: org.apache.kafka.common.serialization.StringSerializer
value-serializer: org.apache.kafka.common.serialization.StringDeserializer
生产者类
@Service
public class Producer {
private static final Logger logger = LoggerFactory.getLogger(Producer.class);
private static final String topic = "users";
@Autowired
private KafkaTemplate<String, String> kafkaTemplate;
public void sendMessage(History t){
logger.info("Inside send message to topic");
this.kafkaTemplate.send(topic,"HelloWorld");
}
}
消费者.java
package com.springboot.kafka;
import com.springboot.model.History;
import com.springboot.repository.HistoryRepository;
import org.apache.kafka.common.protocol.types.Field;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Service;
@Service
public class Consumer {
private static final Logger logger = LoggerFactory.getLogger(Consumer.class);
private static final String topic = "users";
@KafkaListener(topics = topic,groupId = "group-id")
public void consume (String t){
logger.info("Message read as " + t);
}
}
应用程序属性:
logging.level.sql=info
logging.file = /var/tmp/SpringBootAppLog.log
spring.datasource.driver=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost:5432/test
spring.datasource.username=postgres
spring.datasource.password=postgres
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.properties.hibernate.show_sql=true
spring.jpa.hibernate.ddl-auto=update
spring.data.elasticsearch.cluster-name=my-application
spring.data.elasticsearch.cluster-nodes=localhost:9200
关于我缺少什么的任何想法。任何线索将不胜感激。
解决方案
您应该检查完整的错误日志(堆栈跟踪)。在我的情况下,问题是由以下java.io.FileNotFoundException
进一步引起的。
通常,您会在堆栈跟踪结束时发现“真正的”问题。
推荐阅读
- webview - Webview 不接受输入字段中的西里尔字符
- excel - 如何提取出现在句子中特定位置的单词?
- android - 设备离线时显示最新数据(android studio)
- ios - “try AVAudioSession.sharedInstance().setCategory”仅在设备上返回 nil
- security - 让用户永远登录到 React Native 应用程序
- javascript - 如何在 p5.js 中使用 vars 获取 json 数据
- csv - 如果使用 awk 或 sed 某些正则表达式为真,则更改列
- datastage - 领导时间戳的数据阶段?
- javascript - 解析模板化字符串
- javascript - 如何在 React 组件中按顺序调用(A -> B -> C)获取?