最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

被kafka-client和springkafka版本坑到自閉及解決

 更新時間:2022年03月26日 10:22:13   作者:追月亮的猴子  
這篇文章主要介紹了被kafka-client和springkafka版本坑到自閉及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

被kafka-client和springkafka版本坑

上周剛剛歡天喜地的在linux上部了kafka,這周打算用spring-boot框架寫個簡單demo跑一下,結果悲劇就此展開。

首先建立maven工程:pom中添加spring boot kafka依賴:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
? ?xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
? ?<modelVersion>4.0.0</modelVersion>
? ?<parent>
? ? ? <groupId>org.springframework.boot</groupId>
? ? ? <artifactId>spring-boot-starter-parent</artifactId>
? ? ? <version>2.1.5.RELEASE</version>
? ? ? <relativePath/> <!-- lookup parent from repository -->
? ?</parent>
? ?<groupId>com.example</groupId>
? ?<artifactId>kafkaproducer</artifactId>
? ?<version>0.0.1-SNAPSHOT</version>
? ?<name>kafkaproducer</name>
? ?<description>Demo project for Spring Boot</description>
?
? ?<properties>
? ? ? <java.version>1.8</java.version>
? ?</properties>
?
? ?<dependencies>
? ? ? <dependency>
? ? ? ? ?<groupId>org.springframework.boot</groupId>
? ? ? ? ?<artifactId>spring-boot-starter-web</artifactId>
? ? ? </dependency>
?
? ? ? <dependency>
? ? ? ? ?<groupId>org.projectlombok</groupId>
? ? ? ? ?<artifactId>lombok</artifactId>
? ? ? ? ?<optional>true</optional>
? ? ? </dependency>
? ? ? <dependency>
? ? ? ? ?<groupId>org.springframework.boot</groupId>
? ? ? ? ?<artifactId>spring-boot-starter-test</artifactId>
? ? ? ? ?<scope>test</scope>
? ? ? </dependency>
? ? ? <dependency>
? ? ? ? ?<groupId>org.springframework.kafka</groupId>
? ? ? ? ?<artifactId>spring-kafka</artifactId>
? ? ? </dependency>
? ?</dependencies>
?
? ?<build>
? ? ? <plugins>
? ? ? ? ?<plugin>
? ? ? ? ? ? <groupId>org.springframework.boot</groupId>
? ? ? ? ? ? <artifactId>spring-boot-maven-plugin</artifactId>
? ? ? ? ?</plugin>
? ? ? </plugins>
? ?</build>
?
?
</project>

配置文件如下:

server.port=8089
spring.kafka.bootstrap-servers=ip:port
spring.kafka.producer.retries= 0
spring.kafka.producer.batch-size=16384
spring.kafka.producer.buffer-memory=33554432
spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.producer.linger.ms=1

然后新建一個Producer類

package com.example.kafkaproducer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.stereotype.Component;
?
@Component
public class KafkaProducer {
? ? @Autowired
? ? KafkaTemplate kafkaTemplate;
? ? public void produce(){
? ? ? ? kafkaTemplate.send("test","hello word");
? ? ? ? System.out.println("發(fā)送消息");
? ? }
}

在test類中調用

package com.example.kafkaproducer;??
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;?
?
@RunWith(SpringRunner.class)
@SpringBootTest
public class KafkaproducerApplicationTests {?
? ?@Autowired KafkaProducer kafkaProducer;?
? ?@Test
? ?public void contextLoads() {
? ? ? kafkaProducer.produce();
? ?}?
}

然后控制臺就會打印一個莫名奇妙的錯誤,沒有打印任何堆棧信息,大概意思只是表達了連接不上。

Exception thrown when sending a message with key='null' and payload='' to topic

telnet ip+port 是可以通的

隨后發(fā)現(xiàn),xshell上啟動的kafka-server在報這樣一個錯,更詳細的沒有留存。

ERROR Closing socket for /127.0.0.1 because of error (kafka.network.Processor)
kafka.common.KafkaException: Wrong request type 18

百度了一下,很可能是Linux上的kafka版本和pom中引入的spring-kafka依賴不匹配造成的,于是查看對應關系。

查看kafka,發(fā)現(xiàn)裝的是一個0.8.2.1 版本的kafka,該版本的kafka是2015年3月發(fā)布的版本,可以說是十分古老,真是不知道為什么當初要選這么老的版本。

換了幾次spring-kafka的pom之后,依然在報這個問題,于是我選擇換更新的kafka的包。

換了2.2.0版本kafka的包,問題得到解決。

其中consumer的創(chuàng)建命令和老版本的不太一樣,且consumer和producer需使用相同的端口號,而不是像之前producer配置為broker的端口,consumer配置為zookeeper的端口號。

./bin/kafka-console-consumer.sh --bootstrap-server ip:9092 ?--topic test

且config文件夾下server.properties文件中的一些配置和之前不太一樣,需要注意的是,以下兩行配置原來是被注解了的,需要在這里取消掉注解,并配置自己的ip。

listeners = PLAINTEXT://your.host.name:9092
advertised.listeners=PLAINTEXT://your.host.name:9092

springboot、spring-kafka、kafka-client三者兼容性關系

spring官方描述的spring-kafka的版本和kafka-clients的版本對應關系:

官方地址:https://spring.io/projects/spring-kafka

中間列:“Spring Integration for Apache Kafka Version 可忽略不看:

也就是說spring-kafka與spring-client是存在在一對多關系的,那是不是他所有的spring-client都可以選呢?

接著往下看(摘自官網(wǎng)):

他說啥 ?

  • springboot 1.5 你應該用的是spring-kafka 1.3.x.
  • springboot2.0你應該使用的是spring-kafka2.0.x.
  • 如果用的是spring boot2.1.x,那么你必須使用spring-kafka的版本是2.2.x。否則就會出現(xiàn)noClass等等各種異常。
  • spring-kafka的版本是2.1默認使用的spring-client是1.1.x,當你要使用另外兩個時,你就要使用如下的版本配置.
  • 如果你用的是2.2.x的spring-kafka,只看第一張圖,你會以為2.1.x的kafka-clients也可以用。但是spring說了,此時默認用的kafka-clients是2.0.x,如果你想用2.1.x,必須看文檔附錄,下圖的大概意思,必須換掉下圖所示的所有依賴版本。

也就是說并不是一對多 他默認的還是只有一個kafka-client來給你的,你要選其他的可以的,你添加一些額外配置

例如:

 Spring Boot 2.1.0.RELEASE 版本,因此 spring-kafka 的版本為 2.2.0.RELEASE,kafka-clients 的默認版本為2.0.0,所以 kafka 的版本選用為 kafka_2.11-2.1.0 (前面的2.11代表的是Scala的版本后面為kafka的版本號)

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • JAVA項目常用異常處理匯總

    JAVA項目常用異常處理匯總

    這篇文章主要介紹了JAVA項目常用異常處理匯總,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • Java中16條的代碼規(guī)范

    Java中16條的代碼規(guī)范

    如何更規(guī)范化編寫Java 代碼的重要性想必毋需多言,其中最重要的幾點當屬提高代碼性能、使代碼遠離Bug、令代碼更優(yōu)雅,
    2021-07-07
  • Maven工程路徑映射的實現(xiàn)示例

    Maven工程路徑映射的實現(xiàn)示例

    本文主要介紹了Maven工程路徑映射的實現(xiàn)示例,文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-04-04
  • java中的BlockingQueue(阻塞隊列)解析

    java中的BlockingQueue(阻塞隊列)解析

    這篇文章主要介紹了java中的BlockingQueue阻塞隊列解析,阻塞隊列是一個支持兩個附加操作的隊列,這兩個附加的操作是,在隊列為空時,獲取元素的線程會等待隊列變?yōu)榉强?需要的朋友可以參考下
    2023-12-12
  • Springboot+Vue+axios實現(xiàn)文章收藏功能

    Springboot+Vue+axios實現(xiàn)文章收藏功能

    這篇文章主要為大家詳細介紹了Springboot+Vue+axios實現(xiàn)文章收藏功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • 詳解springboot設置cors跨域請求的兩種方式

    詳解springboot設置cors跨域請求的兩種方式

    這篇文章主要介紹了詳解springboot設置cors跨域請求的兩種方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • 詳解Java內存管理中的JVM垃圾回收

    詳解Java內存管理中的JVM垃圾回收

    這篇文章給大家分享了關于Java內存管理中的JVM垃圾回收的相關知識點內容,有興趣的朋友們可以學習參考下。
    2018-08-08
  • sprinboot項目啟動一半到圖形化界面卡住了的解決

    sprinboot項目啟動一半到圖形化界面卡住了的解決

    這篇文章主要介紹了sprinboot項目啟動一半到圖形化界面卡住了的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Java字母加數(shù)字組合比較大小

    Java字母加數(shù)字組合比較大小

    這篇文章主要通過實現(xiàn)Comarable接口來比較(如"a20"和"a9"這種)字符串的大小,希望能給大家做一個參考。
    2016-06-06
  • 利用gson將map轉為json示例

    利用gson將map轉為json示例

    這篇文章主要介紹了利用gson將map轉為json示例,需要的朋友可以參考下
    2014-05-05

最新評論

丹东市| 清远市| 濮阳市| 成武县| 彭山县| 龙陵县| 北海市| 石嘴山市| 汉寿县| 云南省| 峨眉山市| 通城县| 阜城县| 黑龙江省| 九龙县| 名山县| 漳平市| 桐乡市| 新宁县| 汾阳市| 高邑县| 南汇区| 洛扎县| 东明县| 班戈县| 滦南县| 炉霍县| 青阳县| 宁国市| 阿勒泰市| 诸暨市| 金昌市| 双峰县| 米易县| 东莞市| 调兵山市| 基隆市| 舞钢市| 阿勒泰市| 岚皋县| 武威市|