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

SpringBoot3集成Kafka的方法詳解

 更新時(shí)間:2023年08月18日 11:40:30   作者:知了一笑  
Kafka是一個(gè)開源的分布式事件流平臺(tái),常被用于高性能數(shù)據(jù)管道、流分析、數(shù)據(jù)集成和關(guān)鍵任務(wù)應(yīng)用,下面我們就來看看SpringBoot3是如何集成Kafka的吧

一、簡(jiǎn)介

Kafka是一個(gè)開源的分布式事件流平臺(tái),常被用于高性能數(shù)據(jù)管道、流分析、數(shù)據(jù)集成和關(guān)鍵任務(wù)應(yīng)用,基于Zookeeper協(xié)調(diào)的處理平臺(tái),也是一種消息系統(tǒng),具有更好的吞吐量、內(nèi)置分區(qū)、復(fù)制和容錯(cuò),這使得它成為大規(guī)模消息處理應(yīng)用程序的一個(gè)很好的解決方案;

二、環(huán)境搭建

1、Kafka部署

1、下載安裝包:kafka_2.13-3.5.0.tgz

2、配置環(huán)境變量

open -e ~/.bash_profile
export KAFKA_HOME=/本地路徑/kafka3.5
export PATH=$PATH:$KAFKA_HOME/bin
source ~/.bash_profile

3、該目錄【kafka3.5/bin】啟動(dòng)zookeeper

zookeeper-server-start.sh ../config/zookeeper.properties

4、該目錄【kafka3.5/bin】啟動(dòng)kafka

kafka-server-start.sh ../config/server.properties

2、Kafka測(cè)試

1、生產(chǎn)者

kafka-console-producer.sh --broker-list localhost:9092 --topic test-topic
>id-1-message
>id-2-message

2、消費(fèi)者

kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic
id-1-message
id-2-message

3、查看topic列表

kafka-topics.sh --bootstrap-server localhost:9092 --list
test-topic

4、查看消息列表

kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic --from-beginning --partition 0
id-1-message
id-2-message

3、可視化工具

配置和部署

1、下載安裝包:kafka-eagle-bin-3.0.2.tar.gz

2、配置環(huán)境變量

open -e ~/.bash_profile
export KE_HOME=/本地路徑/efak-web-3.0.2
export PATH=$PATH:$KE_HOME/bin
source ~/.bash_profile

3、修改配置文件:system-config.properties

efak.zk.cluster.alias=cluster1
cluster1.zk.list=localhost:2181
efak.url=jdbc:mysql://127.0.0.1:3306/kafka-eagle

4、本地新建數(shù)據(jù)庫:kafka-eagle,注意用戶名和密碼是否一致

5、啟動(dòng)命令

efak-web-3.0.2/bin/ke.sh start

命令語法: ./ke.sh {start|stop|restart|status|stats|find|gc|jdk|version|sdate|cluster}

6、本地訪問【localhost:8048】 username:admin password:123456

KSQL語句測(cè)試

select * from `test-topic` where `partition` in (0)  order by `date` desc limit 5

select * from `test-topic` where `partition` in (0) and msg like '%5%' order by `date` desc limit 3

三、工程搭建

1、工程結(jié)構(gòu)

2、依賴管理

這里關(guān)于依賴的管理就比較復(fù)雜了,首先spring-kafka組件選擇與boot框架中spring相同的依賴,即6.0.10版本,在spring-kafka最近的版本中3.0.8符合;

但是該版本使用的是kafka-clients組件的3.3.2版本,在Spring文檔的kafka模塊中,明確說明spring-boot:3.1要使用kafka-clients:3.4,所以從spring-kafka組件中排除掉,重新依賴kafka-clients組件;

<dependency>
    <groupId>org.springframework.kafka</groupId>
    <artifactId>spring-kafka</artifactId>
    <version>${spring-kafka.version}</version>
    <exclusions>
        <exclusion>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka-clients</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-clients</artifactId>
    <version>${kafka-clients.version}</version>
</dependency>

3、配置文件

配置kafka連接地址,監(jiān)聽器的消息應(yīng)答機(jī)制,消費(fèi)者的基礎(chǔ)模式;

spring:
  # kafka配置
  kafka:
    bootstrap-servers: localhost:9092
    listener:
      missing-topics-fatal: false
      ack-mode: manual_immediate
    consumer:
      group-id: boot-kafka-group
      enable-auto-commit: false
      max-poll-records: 10
      properties:
        max.poll.interval.ms: 3600000

四、基礎(chǔ)用法

1、消息生產(chǎn)

模板類KafkaTemplate用于執(zhí)行高級(jí)的操作,封裝各種消息發(fā)送的方法,在該方法中,通過topickey以及消息主體,實(shí)現(xiàn)消息的生產(chǎn);

@RestController
public class ProducerWeb {
    @Resource
    private KafkaTemplate<String, String> kafkaTemplate;
    @GetMapping("/send/msg")
    public String sendMsg (){
        try {
            // 構(gòu)建消息主體
            JsonMapper jsonMapper = new JsonMapper();
            String msgBody = jsonMapper.writeValueAsString(new MqMsg(7,"boot-kafka-msg"));
            // 發(fā)送消息
            kafkaTemplate.send("boot-kafka-topic","boot-kafka-key",msgBody);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        return "OK" ;
    }
}

2、消息消費(fèi)

編寫消息監(jiān)聽類,通過KafkaListener注解控制監(jiān)聽的具體信息,在實(shí)現(xiàn)消息生產(chǎn)和消費(fèi)的方法測(cè)試后,使用可視化工具kafka-eagle查看topic和消息列表;

@Component
public class ConsumerListener {
    private static final Logger log = LoggerFactory.getLogger(ConsumerListener.class);
    @KafkaListener(topics = "boot-kafka-topic")
    public void listenUser (ConsumerRecord<?,String> record, Acknowledgment acknowledgment) {
        try {
            String key =  String.valueOf(record.key());
            String body = record.value();
            log.info("\n=====\ntopic:boot-kafka-topic,key{},body:{}\n=====\n",key,body);
        } catch (Exception e){
            e.printStackTrace();
        } finally {
            acknowledgment.acknowledge();
        }
    }
}

五、參考源碼

文檔倉庫:

https://gitee.com/cicadasmile/butte-java-note

到此這篇關(guān)于SpringBoot3集成Kafka的方法詳解的文章就介紹到這了,更多相關(guān)SpringBoot3集成Kafka內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關(guān)文章

  • Java8 Optional判空詳解(簡(jiǎn)化判空操作)

    Java8 Optional判空詳解(簡(jiǎn)化判空操作)

    這篇文章主要給大家介紹了關(guān)于Java8 Optional判空(簡(jiǎn)化判空操作)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • java簡(jiǎn)單列出文件夾下所有文件的方法

    java簡(jiǎn)單列出文件夾下所有文件的方法

    這篇文章主要介紹了java簡(jiǎn)單列出文件夾下所有文件的方法,涉及java針對(duì)文件夾遍歷操作相關(guān)技巧,需要的朋友可以參考下
    2016-08-08
  • Java如何實(shí)現(xiàn)字符串補(bǔ)齊

    Java如何實(shí)現(xiàn)字符串補(bǔ)齊

    這篇文章主要介紹了Java如何實(shí)現(xiàn)字符串補(bǔ)齊的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-05-05
  • Java JDBC的底層實(shí)現(xiàn)原理深度解析

    Java JDBC的底層實(shí)現(xiàn)原理深度解析

    JDBC是Java和數(shù)據(jù)庫之間的一個(gè)橋梁,是一個(gè)「規(guī)范」而不是一個(gè)實(shí)現(xiàn),能夠執(zhí)行SQL語句,JDBC由一組用Java語言編寫的類和接口組成,各種不同類型的數(shù)據(jù)庫都有相應(yīng)的實(shí)現(xiàn),這篇文章給大家介紹Java JDBC的底層實(shí)現(xiàn)原理,感興趣的朋友跟隨小編一起看看吧
    2025-11-11
  • 高并發(fā)下restTemplate的錯(cuò)誤分析方式

    高并發(fā)下restTemplate的錯(cuò)誤分析方式

    這篇文章主要介紹了高并發(fā)下restTemplate的錯(cuò)誤分析方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 關(guān)于Java的對(duì)象序列化流和反序列化流詳細(xì)解讀

    關(guān)于Java的對(duì)象序列化流和反序列化流詳細(xì)解讀

    這篇文章主要介紹了關(guān)于Java的對(duì)象序列化流和反序列化流,對(duì)象序列化:就是將對(duì)象保存到磁盤中,或者在網(wǎng)絡(luò)中傳輸對(duì)象,反之,自己序列還可以從文件中讀取回來,重構(gòu)對(duì)象,對(duì)它進(jìn)行反序列化,需要的朋友可以參考下
    2023-05-05
  • 一學(xué)即會(huì)之JDK版本快速切換方法(2024)

    一學(xué)即會(huì)之JDK版本快速切換方法(2024)

    這篇文章主要介紹了一學(xué)即會(huì)之JDK版本快速切換方法,詳細(xì)給大家講解了如何下載、安裝和配置多個(gè)JDK版本,并通過設(shè)置環(huán)境變量和編寫批處理腳本來切換JDK版本,需要的朋友可以參考下
    2025-03-03
  • SpringBoot連接MySql數(shù)據(jù)庫的原理及代碼示例

    SpringBoot連接MySql數(shù)據(jù)庫的原理及代碼示例

    SpringBoot是一款流行的Java開發(fā)框架,它可以輕松地連接各種類型的數(shù)據(jù)庫,包括關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫,本文將介紹SpringBoot是如何連接數(shù)據(jù)庫的,包括其原理和代碼示例,需要的朋友可以參考下
    2023-07-07
  • Java語言實(shí)現(xiàn)快速冪取模算法詳解

    Java語言實(shí)現(xiàn)快速冪取模算法詳解

    這篇文章主要介紹了Java語言實(shí)現(xiàn)快速冪取模算法詳解,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • SpringBoot調(diào)用外部接口的幾種方式

    SpringBoot調(diào)用外部接口的幾種方式

    SpringBoot應(yīng)用中,調(diào)用外部接口是微服務(wù)架構(gòu)常見需求,本文主要介紹了SpringBoot調(diào)用外部接口的幾種方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-10-10

最新評(píng)論

社会| 新密市| 合作市| 綦江县| 卢龙县| 开阳县| 衡东县| 宾川县| 岱山县| 汉源县| 高邑县| 扬中市| 廉江市| 呈贡县| 清水河县| 纳雍县| 托克逊县| 沅陵县| 梨树县| 汝阳县| 江北区| 辉县市| 京山县| 南京市| 磴口县| 高雄县| 夹江县| 兖州市| 诸城市| 喀喇| 江北区| 陇西县| 吉安县| 资溪县| 大同县| 乌鲁木齐县| 邹平县| 赤峰市| 临泽县| 杭锦后旗| 比如县|