SpringBoot整合kafka遇到的版本不對(duì)應(yīng)問(wèn)題及解決
SpringBoot整合kafka遇到版本不對(duì)應(yīng)
SpringBoot 整合 kafka 需要在SpringBoot項(xiàng)目里增加kafka的jar,而最為關(guān)鍵的一點(diǎn)是版本要對(duì)應(yīng)好。
如果你的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>
那么對(duì)應(yīng)的,你的kafka也應(yīng)該用新版本
? ? ? ? <!-- 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>
當(dāng)然,版本號(hào)可能其他方式也可以。
不過(guò)如果你用2.1.0版本的SpringBoot,卻仍使用2.1.7版本的kafka,則會(huì)遇到如下錯(cuò)誤:
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
SpringBoot整合kafka問(wèn)題的注意事項(xiàng)
要想外網(wǎng)的機(jī)器可以連接成功需要在kafka的server.properties配置文件中需要如下配置
這個(gè)需要注意一下,填寫(xiě)主機(jī)IP的時(shí)候不能寫(xiě)localhost,如果這樣寫(xiě)外邊的主機(jī)是無(wú)法連接kafka的,需要標(biāo)明具體的機(jī)器外網(wǎng)IP。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
java使用hashMap緩存保存數(shù)據(jù)的方法
這篇文章主要介紹了java使用hashMap緩存保存數(shù)據(jù)的方法,結(jié)合實(shí)例形式簡(jiǎn)單分析了java基于hashmap讀寫(xiě)緩存數(shù)據(jù)的相關(guān)操作技巧,需要的朋友可以參考下2016-08-08Java批量插入數(shù)據(jù)的代碼實(shí)現(xiàn)
日常工作或者學(xué)習(xí)中,可能會(huì)遇到批量插入數(shù)據(jù)的需求,一般情況下數(shù)據(jù)量少的時(shí)候,我們會(huì)直接調(diào)用批量接口插入數(shù)據(jù)即可,當(dāng)數(shù)據(jù)量特別大時(shí),我們就會(huì)用到分批插入數(shù)據(jù),所以本文給大家介紹了Java批量插入數(shù)據(jù)的代碼實(shí)現(xiàn),需要的朋友可以參考下2024-01-01Java JDBC API介紹與實(shí)現(xiàn)數(shù)據(jù)庫(kù)連接池流程
JDBC是指Java數(shù)據(jù)庫(kù)連接,是一種標(biāo)準(zhǔn)Java應(yīng)用編程接口( JAVA API),用來(lái)連接 Java 編程語(yǔ)言和廣泛的數(shù)據(jù)庫(kù)。從根本上來(lái)說(shuō),JDBC 是一種規(guī)范,它提供了一套完整的接口,允許便攜式訪問(wèn)到底層數(shù)據(jù)庫(kù),本篇文章我們來(lái)了解JDBC API及數(shù)據(jù)庫(kù)連接池2022-12-12Java語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單FTP軟件 FTP本地文件管理模塊實(shí)現(xiàn)(9)
這篇文章主要為大家詳細(xì)介紹了Java語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單FTP軟件,F(xiàn)TP本地文件管理模塊的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04Jenkin郵件收發(fā)實(shí)現(xiàn)原理及過(guò)程詳解
這篇文章主要介紹了Jenkin郵件收發(fā)實(shí)現(xiàn)原理及過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09Java使用EasyExcel實(shí)現(xiàn)Excel的導(dǎo)入導(dǎo)出
這篇文章主要給大家介紹了關(guān)于Java使用EasyExcel實(shí)現(xiàn)Excel的導(dǎo)入導(dǎo)出,在各種系統(tǒng)中,導(dǎo)入導(dǎo)出的數(shù)據(jù)一般都是通過(guò)Excel來(lái)完成的,需要的朋友可以參考下2023-07-07java swagger ui 添加header請(qǐng)求頭參數(shù)的方法
今天小編就為大家分享一篇java swagger ui 添加header請(qǐng)求頭參數(shù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08SpringBoot處理form-data表單接收對(duì)象數(shù)組的方法
form-data則是一種更加靈活的編碼方式,它可以處理二進(jìn)制數(shù)據(jù)(如圖片、文件等)以及文本數(shù)據(jù),這篇文章主要介紹了SpringBoot處理form-data表單接收對(duì)象數(shù)組,需要的朋友可以參考下2023-11-11詳解mybatis如何實(shí)現(xiàn)進(jìn)行分表
在數(shù)據(jù)庫(kù)設(shè)計(jì)中,分表是一種常見(jiàn)的優(yōu)化策略,它可以將一個(gè)大表拆分成多個(gè)小表,以提高查詢性能和存儲(chǔ)效率,下面我們就來(lái)學(xué)習(xí)一下mybatis如何實(shí)現(xiàn)進(jìn)行分表吧2023-11-11