当前位置: 首页 > 知识库问答 >
问题:

找不到所需的“org . spring framework . Kafka . core . Kafka template”类型的bean

姬俊驰
2023-03-14

我正在使用spring boot,apache kafka。

下面是我的控制器代码

package com.infy.controller;

@RestController
@RequestMapping(value = "/serving/")
public class ServingRequestWebControllerImpl implements ServingRequestWebController {

    private static final Logger logger = LoggerFactory.getLogger(ServingRequestWebControllerImpl.class);

    @Autowired
    KafkaTemplate<String, TaskDetailsEntity> kafkaJsontemplate;

    String TOPIC_NAME = "sample-topic";

    @Override
    @PostMapping(value = "/produce", consumes = { "application/json" }, produces = { "application/json" })
    public String taskQueue(TaskDetailsEntity taskgDetailsEntity) {
        kafkaJsontemplate.send(TOPIC_NAME, taskgDetailsEntity);
        return "Serving Request Published Successfully To:- " + TOPIC_NAME;
    }
}

以下是 Kafka 配置代码

package com.infy.config;
@Configuration
public class KafkaConfig {

    @Bean
    public ProducerFactory<String, String> producerFactory() {
        Map<String, Object> config = new HashMap<>();
        config.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "127.0.0.1:9092");
        config.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
        config.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, JsonSerializer.class);
        return new DefaultKafkaProducerFactory(config);
    }

    @Bean
    public KafkaTemplate<String, String> kafkaTemplate() {
        return new KafkaTemplate<String, String>(producerFactory());
    }

    public ProducerFactory<String, ServingDetailsEntity> producerFactoryServingDetail() {
        Map<String, Object> config = new HashMap<>();
        config.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "127.0.0.1:9092");
        config.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
        config.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, JsonSerializer.class);
        return new DefaultKafkaProducerFactory(config);
    }

    @Bean
    public KafkaTemplate<String, ServingDetailsEntity> kafkaTemplateServingDetailsListener() {
        return new KafkaTemplate<String, ServingDetailsEntity>(producerFactoryServingDetail());
    }

    @Bean
    public ConsumerFactory<String, ServingDetailsEntity> consumerFactory() {
        Map<String, Object> config = new HashMap<>();
        config.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "127.0.0.1:9092");
        config.put(ConsumerConfig.GROUP_ID_CONFIG, "event-group");
        config.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringSerializer.class);
        config.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, JsonSerializer.class);
        return new DefaultKafkaConsumerFactory<>(config, new StringDeserializer(),
                new JsonDeserializer<>(ServingDetailsEntity.class));
    }

    @Bean
    public ConcurrentKafkaListenerContainerFactory<String, ServingDetailsEntity> kafkaTemplateTaskDetailsListener() {
        ConcurrentKafkaListenerContainerFactory<String, ServingDetailsEntity> factory = new ConcurrentKafkaListenerContainerFactory<String, ServingDetailsEntity>();
        factory.setConsumerFactory(consumerFactory());
        return factory;
    }
}

以下是我的消费者代码

package com.infy.consumer;
@Service
public class KafkaConsumerService {

    private static final Logger logger = LoggerFactory.getLogger(KafkaConsumerService.class);

    @Autowired
    private ServingService service;

    @KafkaListener(topics = "sample-topic", groupId = "event-group",containerFactory = "kafkaTemplateTaskDetailsListener")
    public void consumeTask(TaskDetailsEntity taskDtls){
        System.out.println("Consumed Message:- \n "+taskDtls);

        TaskDetailsEntity upsert = service.taskUpsert(taskDtls);
        System.out.println(upsert.getId());
        logger.info("\n Exit KafkaConsumerService consumeTask");
    }
}

当我运行我的spring boot应用程序时,我得到以下错误

描述:com.infy.controller.ServingRequestWebControllerImpl中的字段kafkaJsontempe需要一个无法找到的'org.springframework.kafka.core.KafkaTemplate'类型的bean。注入点有以下注释:-@org.springframework.beans.factory.annotation.Autowired(必需=true)找到了以下候选者,但无法注入:-'KafkaAutoConfiguration'中的Bean方法'kafkaTemboard'未加载,因为自动配置'KafkaAutoConfiguration'被排除操作:考虑重新访问上述条目或在配置中定义'org.springframework.kafka.core.KafkaTemplate'类型的bean。

我尝试将以下配置添加到应用程序.属性,但没有运气

spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration

下面是我的Spring开机主要代码

package com.infy;

@SpringBootApplication
public class SpringBootInitializer {

    public static void main(String[] args) {

        SpringApplication.run(SpringBootInitializer.class, args);
    }
}

请有人帮帮我,我犯了什么错误。

共有1个答案

丁正阳
2023-03-14

您想要自动连接 KafkaTemplate 类型的 Bean

也可能是一个错误,< code>producerFactory()有< code>@Bean注释,而< code > producer factoryservingdetail()没有。

 类似资料:
  • 我一直在学习如何使用spring数据,并创建了一个非常简单的项目来测试它。文件夹结构和applicationcontext。xml显示在这里:applicationcontext。xml和文件夹结构我得到的错误显示在这里:控制台错误输出。我在类路径上有applicationContext,并声明了该类的bean,你知道我的问题是什么吗?非常感谢。 编辑:我已经更新了我的帖子,以显示主类和道类,以及

  • 问题内容: 每当启动应用程序spring启动时,我都会收到以下错误。 申请开始失败 描述: com.base.model.AbstractDao中的现场会话需要找不到“ org.hibernate.SessionFactory”类型的Bean。 行动: 考虑在配置中定义类型为“ org.hibernate.SessionFactory”的bean。 我添加了我的应用程序的实现: POM.xml 应

  • 我已经提到了为什么在Spring Boot期间找不到bean?和“字段需要找不到类型的bean。”使用mongodb的spring restful API出错 CustomerService只是一个接口,充当CustomerController和CustomerService实施之间的中间人,它实际上在CustomerRepository的帮助下对数据库执行操作。 我正在尝试从MYSQL数据库中检

  • 我是一名spring boot学习者,所以我一直在尝试创建一些基本的spring boot应用程序。我试图运行开发的应用程序时出错。 我的错误是[[https://i.stack.imgur.com/oyQDi.png][1]][1] java: ItemDetails.java:[软件包名称:io.ajithan.springbootstarter.model] ItemResponse.jav

  • 结构没有问题。spring boot可以扫描UserMapper,但不能扫描UserService。我试着给我的UserService@Mapper组件,然后它就可以被扫描了。但我不知道如何使用其他方法进行扫描。我尝试了@服务,但不起作用。

  • 我搜索了很多stackoverflow,但没有找到解决问题的方法。当将SpringBoot应用程序作为WAR文件部署到Tomcat 8时,我发现以下错误,在本地它确实可以正常工作 有一个接口 和两个实现类 和二等舱 还有Rest服务 所以我不明白Tomcat怎么找不到像boolean这样的原始数据类型,也不明白为什么我在本地运行它时它能工作。 任何帮助都将不胜感激 问候马蒂亚斯