SpringBoot 整合 kafka 遇到的版本不对应问题

SpringBoot 整合 kafka 需要在SpringBoot项目里增加kafka的jar,而最为关键的一点是版本要对应好。

如果你的SpringBoot是2.0.3版本:

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

那么你可以用2.1.7版本的kafka:

        <!-- kafka -->
        <dependency>
            <groupId>org.springframework.kafka</groupId>
            <artifactId>spring-kafka</artifactId>
            <version>2.1.7.RELEASE</version>
        </dependency>

 

而如果你的SpringBoot比较新,用的2.1.0版本:

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.0.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

那么对应的,你的kafka也应该用新版本:

        <!-- https://mvnrepository.com/artifact/org.springframework.kafka/spring-kafka -->
        <dependency>
            <groupId>org.springframework.kafka</groupId>
            <artifactId>spring-kafka</artifactId>
            <version>2.2.0.RELEASE</version>
        </dependency>

当然,版本号可能其他方式也可以。

 

不过如果你用2.1.0版本的SpringBoot,却仍使用2.1.7版本的kafka,则会遇到如下错误:

D:\DevelopFiles\Java\jdk1.8.0_131\bin\java.exe -XX:TieredStopAtLevel=1 -noverify -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8247 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=localhost -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2018.2.4\lib\idea_rt.jar=8248:C:\Program Files\JetBrains\IntelliJ IDEA 2018.2.4\bin" -Dfile.encoding=UTF-8 -classpath D:\DevelopFiles\Java\jdk1.8.0_131\jre\lib\charsets.jar;D:\DevelopFiles\Java\jdk1.8.0_131\jre\lib\deploy.jar;D:\DevelopFiles\Java\jdk1.8.0_131\jre\lib\ext\access-bridge-64.jar;D:\DevelopFiles\Java\jdk1.8.0_131\jre\lib\ext\cldrdata.jar;D:\DevelopFiles\Java\jdk1.8.0_131\jre\lib\ext\dnsns.jar;D:\DevelopFiles\Java\jdk1.8.0_131\jre\lib\ext\jaccess.jar;D:\DevelopFiles\Java\jdk1.8.0_131\jre\lib\ext\jfxrt.jar;D:\DevelopFiles\Java\jdk1.8.0_131\jre\lib\ext\localedata.jar;D:\DevelopFiles\Java\jdk1.8.0_131\jre\lib\ext\nashorn.jar;D:\DevelopFiles\Java\jdk1.8.0_131\jre\lib\ext\sunec.jar;D:\DevelopFiles\Java\jdk1.8.0_131\jre\lib\ext\sunjce_provider.jar;D:\DevelopFiles\Java\jdk1.8.0_131\jre\lib\ext\sunmscapi.jar;D:\DevelopFiles\Java\jdk1.8.0_131\jre\lib\ext\sunpkcs11.jar;D:\DevelopFiles\Java\jdk1.8.0_131\jre\lib\ext\zipfs.jar;D:\DevelopFiles\Java\jdk1.8.0_131\jre\lib\javaws.jar;D:\DevelopFiles\Java\jdk1.8.0_131\jre\lib\jce.jar;D:\DevelopFiles\Java\jdk1.8.0_131\jre\lib\jfr.jar;D:\DevelopFiles\Java\jdk1.8.0_131\jre\lib\jfxswt.jar;D:\DevelopFiles\Java\jdk1.8.0_131\jre\lib\jsse.jar;D:\DevelopFiles\Java\jdk1.8.0_131\jre\lib\management-agent.jar;D:\DevelopFiles\Java\jdk1.8.0_131\jre\lib\plugin.jar;D:\DevelopFiles\Java\jdk1.8.0_131\jre\lib\resources.jar;D:\DevelopFiles\Java\jdk1.8.0_131\jre\lib\rt.jar;D:\workspace\IDEA\chinaunicom\alarm-query-kafka\target\classes;D:\DevelopFiles\Maven\m2\org\springframework\boot\spring-boot-starter\2.1.0.RELEASE\spring-boot-starter-2.1.0.RELEASE.jar;D:\DevelopFiles\Maven\m2\org\springframework\boot\spring-boot\2.1.0.RELEASE\spring-boot-2.1.0.RELEASE.jar;D:\DevelopFiles\Maven\m2\org\springframework\boot\spring-boot-autoconfigure\2.1.0.RELEASE\spring-boot-autoconfigure-2.1.0.RELEASE.jar;D:\DevelopFiles\Maven\m2\org\springframework\boot\spring-boot-starter-logging\2.1.0.RELEASE\spring-boot-starter-logging-2.1.0.RELEASE.jar;D:\DevelopFiles\Maven\m2\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;D:\DevelopFiles\Maven\m2\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;D:\DevelopFiles\Maven\m2\org\apache\logging\log4j\log4j-to-slf4j\2.11.1\log4j-to-slf4j-2.11.1.jar;D:\DevelopFiles\Maven\m2\org\apache\logging\log4j\log4j-api\2.11.1\log4j-api-2.11.1.jar;D:\DevelopFiles\Maven\m2\org\slf4j\jul-to-slf4j\1.7.25\jul-to-slf4j-1.7.25.jar;D:\DevelopFiles\Maven\m2\javax\annotation\javax.annotation-api\1.3.2\javax.annotation-api-1.3.2.jar;D:\DevelopFiles\Maven\m2\org\springframework\spring-core\5.1.2.RELEASE\spring-core-5.1.2.RELEASE.jar;D:\DevelopFiles\Maven\m2\org\springframework\spring-jcl\5.1.2.RELEASE\spring-jcl-5.1.2.RELEASE.jar;D:\DevelopFiles\Maven\m2\org\yaml\snakeyaml\1.23\snakeyaml-1.23.jar;D:\DevelopFiles\Maven\m2\org\slf4j\slf4j-api\1.7.25\slf4j-api-1.7.25.jar;D:\DevelopFiles\Maven\m2\org\springframework\kafka\spring-kafka\2.1.7.RELEASE\spring-kafka-2.1.7.RELEASE.jar;D:\DevelopFiles\Maven\m2\org\springframework\spring-context\5.1.2.RELEASE\spring-context-5.1.2.RELEASE.jar;D:\DevelopFiles\Maven\m2\org\springframework\spring-aop\5.1.2.RELEASE\spring-aop-5.1.2.RELEASE.jar;D:\DevelopFiles\Maven\m2\org\springframework\spring-beans\5.1.2.RELEASE\spring-beans-5.1.2.RELEASE.jar;D:\DevelopFiles\Maven\m2\org\springframework\spring-expression\5.1.2.RELEASE\spring-expression-5.1.2.RELEASE.jar;D:\DevelopFiles\Maven\m2\org\springframework\spring-messaging\5.1.2.RELEASE\spring-messaging-5.1.2.RELEASE.jar;D:\DevelopFiles\Maven\m2\org\springframework\spring-tx\5.1.2.RELEASE\spring-tx-5.1.2.RELEASE.jar;D:\DevelopFiles\Maven\m2\org\springframework\retry\spring-retry\1.2.2.RELEASE\spring-retry-1.2.2.RELEASE.jar;D:\DevelopFiles\Maven\m2\org\apache\kafka\kafka-clients\2.0.0\kafka-clients-2.0.0.jar;D:\DevelopFiles\Maven\m2\org\lz4\lz4-java\1.4.1\lz4-java-1.4.1.jar;D:\DevelopFiles\Maven\m2\org\xerial\snappy\snappy-java\1.1.7.1\snappy-java-1.1.7.1.jar;D:\DevelopFiles\Maven\m2\com\alibaba\fastjson\1.2.47\fastjson-1.2.47.jar;D:\DevelopFiles\Maven\m2\org\apache\commons\commons-lang3\3.8.1\commons-lang3-3.8.1.jar com.unicom.AlarmQueryKafkaApplication

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.0.RELEASE)

2018-10-31 19:53:47.061  INFO 14260 --- [           main] com.unicom.AlarmQueryKafkaApplication    : Starting AlarmQueryKafkaApplication on SHNWANGC260 with PID 14260 (D:\workspace\IDEA\chinaunicom\alarm-query-kafka\target\classes started by wangc260 in D:\workspace\IDEA\chinaunicom)
2018-10-31 19:53:47.068  INFO 14260 --- [           main] com.unicom.AlarmQueryKafkaApplication    : No active profile set, falling back to default profiles: default
2018-10-31 19:53:48.299  INFO 14260 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.kafka.annotation.KafkaBootstrapConfiguration' of type [org.springframework.kafka.annotation.KafkaBootstrapConfiguration$$EnhancerBySpringCGLIB$$60ef0a74] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2018-10-31 19:53:48.524  WARN 14260 --- [           main] s.c.a.AnnotationConfigApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'springConsumer' defined in file [D:\workspace\IDEA\chinaunicom\alarm-query-kafka\target\classes\com\unicom\kafka\SpringConsumer.class]: Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'batchFactory' defined in class path resource [com/unicom/kafka/kafkaConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.kafka.config.KafkaListenerContainerFactory]: Factory method 'batchFactory' threw exception; nested exception is java.lang.NoSuchMethodError: org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory.getContainerProperties()Lorg/springframework/kafka/listener/ContainerProperties;
2018-10-31 19:53:48.536  INFO 14260 --- [           main] ConditionEvaluationReportLoggingListener : 

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2018-10-31 19:53:48.551 ERROR 14260 --- [           main] o.s.b.d.LoggingFailureAnalysisReporter   : 

***************************
APPLICATION FAILED TO START
***************************

Description:

An attempt was made to call the method org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory.getContainerProperties()Lorg/springframework/kafka/listener/ContainerProperties; but it does not exist. Its class, org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory, is available from the following locations:

    jar:file:/D:/DevelopFiles/Maven/m2/org/springframework/kafka/spring-kafka/2.1.7.RELEASE/spring-kafka-2.1.7.RELEASE.jar!/org/springframework/kafka/config/ConcurrentKafkaListenerContainerFactory.class

It was loaded from the following location:

    file:/D:/DevelopFiles/Maven/m2/org/springframework/kafka/spring-kafka/2.1.7.RELEASE/spring-kafka-2.1.7.RELEASE.jar


Action:

Correct the classpath of your application so that it contains a single, compatible version of org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory


Process finished with exit code 1

 

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
在使用SpringBoot整合Kafka的过程中,首先需要添加Kafka的配置。可以通过在application.properties或application.yml文件中添加spring.kafka.listener.ack-mode = manual配置来启用手动确认消息的模式。 接下来,可以使用SpringBoot提供的Kafka模板来实现消息的发送和消费。通过配置Kafka的生产者和消费者相关属性,可以实现消息的发送和接收。可以使用KafkaTemplate来发送消息,使用@KafkaListener注解来监听和接收消息。 使用SpringBoot整合Kafka可以方便地实现消息的发送和消费。通过配置简化了Kafka的操作,并提供了更加便捷的方式来处理Kafka消息。同时,SpringBoot的自动配置机制也能够减少开发人员的工作量,提高了开发效率。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [SpringBoot整合Kafka](https://blog.csdn.net/JohinieLi/article/details/128100626)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [springboot-kafka:springboot整合kafka实现消息的发送与消费学习](https://download.csdn.net/download/weixin_42129797/18639827)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值