首页 > 其他分享 >从零开始学Spring Boot系列-集成Kafka

从零开始学Spring Boot系列-集成Kafka

时间:2024-03-21 14:47:58浏览次数:33  
标签:Spring Boot springframework kafka spring org import Kafka

Kafka简介

Apache Kafka是一个开源的分布式流处理平台,由LinkedIn公司开发和维护,后来捐赠给了Apache软件基金会。Kafka主要用于构建实时数据管道和流应用。它类似于一个分布式、高吞吐量的发布-订阅消息系统,可以处理消费者网站的所有动作流数据。这种动作流数据包括页面浏览、搜索和其他用户的行动。通过这些数据,Kafka能够实时地将数据流传输到系统和应用上。
Kafka的主要特性包括:

  1. 高吞吐量:Kafka以高吞吐量处理数据,即使是非常大量的数据也能轻松应对。
  2. 分布式:Kafka是分布式的,可以在多个节点上运行,从而实现高可用性和容错性。
  3. 持久性:Kafka将数据持久化到磁盘,因此即使系统崩溃,数据也不会丢失。
  4. 实时性:Kafka可以实时处理数据,为实时分析、监控和报警等应用提供了强大的支持。

Ubuntu安装Kafka

本文是在wsl2上的Ubuntu 22.04上安装Kafka。你需要先安装Java环境,因为Kafka是用Java编写的。然后,你可以从Apache Kafka的官方网站下载并安装Kafka。以下是安装步骤:

  1. 安装Java环境:你可以使用apt-get命令安装OpenJDK。

     sudo apt-get update  
     sudo apt-get install openjdk-17-jdk
    
  2. 下载Kafka:从Apache Kafka的官方网站下载适合你操作系统的版本。下载完成后,解压到指定目录。

       wget https://mirrors.aliyun.com/apache/kafka/3.7.0/kafka_2.13-3.7.0.tgz
       tar -xzf kafka_2.13-3.7.0.tgz  
       mv kafka_2.13-3.7.0 kafka
       cd kafka
    

3.启动Kafka:Kafka依赖于ZooKeeper,所以你需要先启动ZooKeeper,然后再启动Kafka。

 # 启动ZooKeeper  
 bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
 # 启动Kafka  
 nohup bin/kafka-server-start.sh config/server.properties 2>&1 &

4.使用kafka客户端连接

Spring Boot集成Kafka

  1. 添加依赖:在你的Spring Boot项目的build.gradle 文件中添加Kafka的依赖。

    dependencies {
     implementation 'org.springframework.boot:spring-boot-starter-web'
     compileOnly 'org.projectlombok:lombok'
     annotationProcessor 'org.projectlombok:lombok'
     implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
     runtimeOnly 'mysql:mysql-connector-java:8.0.17'
     implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.3'
     implementation 'org.springframework.boot:spring-boot-starter-data-redis'
     implementation 'org.apache.commons:commons-pool2'
     implementation 'org.springframework.kafka:spring-kafka'
    }
    
  2. 配置Kafka:在application.properties或application.yml文件中配置Kafka的相关属性,如broker地址、端口、topic等。

    spring.kafka.bootstrap-servers=localhost:9092  
    spring.kafka.consumer.group-id=my-group  
    spring.kafka.consumer.auto-offset-reset=earliest  
    spring.kafka.template.default-topic=my-topic
    
  3. 创建生产者:使用KafkaTemplate发送消息到Kafka。

     package cn.daimajiangxin.springboot.learning.kafka;
    
     import jakarta.annotation.Resource;
     import org.springframework.kafka.core.KafkaTemplate;
     import org.springframework.stereotype.Service;
    
     @Service
     public class KafkaProducer {
         @Resource
         private KafkaTemplate<String, String> kafkaTemplate;
    
         public void sendMessage(String message) {
             kafkaTemplate.send("my-topic", message);
         }
     }
    
  4. 创建消费者:使用@KafkaListener注解监听Kafka中的消息。

    package cn.daimajiangxin.springboot.learning.kafka;
    
    import org.springframework.kafka.annotation.KafkaListener;
    import org.springframework.stereotype.Service;
    
    @Service
    public class KafkaConsumer {
        @KafkaListener(topics = "my-topic", groupId = "my-group")
        public void consume(String message) {
            System.out.println("Received message: " + message);
        }
    }
    
  5. 创建控制器:KafkaController

     package cn.daimajiangxin.springboot.learning.controller;
     import cn.daimajiangxin.springboot.learning.kafka.KafkaProducer;
     import org.springframework.beans.factory.annotation.Autowired;
     import org.springframework.web.bind.annotation.GetMapping;
     import org.springframework.web.bind.annotation.RestController;
    
     @RestController
         public class KafkaController {
    
         private final  KafkaProducer kafkaProducer;
    
             @Autowired
             public KafkaController(KafkaProducer kafkaProducer) {
                 this.kafkaProducer = kafkaProducer;
             }
    
             @GetMapping("/kafka")
             public void kafka() {
                 kafkaProducer.sendMessage("Hello World");
             }
         }
    
    

现在,你的Spring Boot应用已经集成了Kafka,你可以通过生产者发送消息,并通过消费者接收并处理这些消息了。
20240321131109
20240321131208

总结

以上就是关于从零开始学Spring Boot系列文章——集成Kafka的简介。Kafka作为一个强大的分布式流处理平台,与Spring Boot的集成可以极大地简化实时数据处理应用的开发。希望这篇文章能帮助你更好地理解Kafka及其在Spring Boot项目中的应用。


我是代码匠心,和我一起学习更多精彩知识!!!扫描二维码!关注我,实时获取推送。
公众号
源文来自:https://daimajiangxin.cn

标签:Spring,Boot,springframework,kafka,spring,org,import,Kafka
From: https://www.cnblogs.com/daimajiangxin/p/18087329

相关文章

  • Spring基础
    IOC控制反转如A类中依赖了B类,传统生成实例的过程是需要先实例化B,在实例化A时传入B;控制反转实现了先实例化A,扫描到需要使用B时再实例化B实现了实例化过程的解耦,A、B可以单独实例化,再实现依赖关系Spring容器管理时的循环依赖问题三级缓存解决循环依赖三级缓存实际对应的是三次......
  • Zookeeper+Kafka单节点部署
    一.Zookeeper部署启动1.下载zookeeperApacheZooKeeper(http://zookeeper.apache.org/releases.html) 2.文件上传通过Xftp软件上传到Linux系统中若在外部解压可直接传入相应的文件地址,若未解压则传入压缩包在Linux系统中进行解压操作tar-zxvfzookeeper-3.9.2.tar.gz......
  • Spring MVC初体验
    使用maven框架构建SpringMVC项目,工具idea2023.2,jdk17,tomcat10。(之前使用tomcat9,与jdk17不兼容导致项目失败。在这个过程中失败很多次,有各种各样的原因,分别找到原因解决。)参考之前一篇文章SpringBootWeb项目整合jsp页面访问(非web项目改为web项目适用)。项目结构:......
  • springboot下postgresql指定schema问题
    首先明确用的postgresql版本是PostgreSQL9.5.25,compiledbyVisualC++build1800,64-bitspringboot是2.3.5.RELEASE。现有的文档提供的连接数据库配置方式是url:jdbc:postgresql://IP:端口/数据库名?currentSchema=模式名&stringtype=unspecified通常postgresq......
  • Vue.js+SpringBoot开发服装店库存管理系统
    目录一、摘要1.1项目介绍1.2项目录屏二、功能模块2.1数据中心模块2.2角色管理模块2.3服装档案模块2.4服装入库模块2.5服装出库模块三、系统设计3.1用例设计3.2数据库设计3.2.1角色表3.2.2服装档案表3.2.3服装入库表3.2.4服装出库表四、系统展示五、核......
  • Vue.js+SpringBoot开发高校宿舍调配管理系统
    目录一、摘要1.1项目介绍1.2项目录屏二、功能需求2.1学生端2.2宿管2.3老师端三、系统展示四、核心代码4.1查询单条个人习惯4.2查询我的室友4.3查询宿舍4.4查询指定性别全部宿舍4.5初次分配宿舍五、免责说明一、摘要1.1项目介绍基于JAVA+Vue+Spring......
  • 基于java+springboot+vue实现的电影院选票系统(文末源码+Lw+ppt)23-467
    摘要时代在飞速进步,每个行业都在努力发展现在先进技术,通过这些先进的技术来提高自己的水平和优势,电影院选票系统当然不能排除在外。电影院选票系统是在实际应用和软件工程的开发原理之上,运用java语言,前台Vue框架以及后台SpringBoot框架进行开发。首先要进行需求分析,分析出电......
  • 基于java+springboot+vue实现的智慧养老院管理系统(文末源码+Lw+ppt)23-490
    摘 要智慧养老院管理系统采用B/S架构,数据库是MySQL。网站的搭建与开发采用了先进的java进行编写,使用了springboot框架。该系统从三个对象:由管理员和家属、护工来对系统进行设计构建。主要功能包括:个人信息修改,对家属信息、护工信息、老人入住、外出报备、退房登记、每月餐饮......
  • 基于java+springboot+vue实现的学生管理系统(文末源码+Lw+ppt)23-486
    摘  要学生管理系统的目的是让使用者可以更方便的将人、设备和场景更立体的连接在一起。能让用户以更科幻的方式使用产品,体验高科技时代带给人们的方便,同时也能让用户体会到与以往常规产品不同的体验风格。与安卓,iOS相比较起来,学生管理系统在流畅性,续航能力,等方方面面都有......
  • 基于java+SpringBoot+Vuel的制造装备物联及生产管理ERP系统设计与实现
    基于java+SpringBoot+Vuel的制造装备物联及生产管理ERP系统设计与实现开发语言:Java数据库:MySQL技术:SpringBoot+MyBatis工具:IDEA/Ecilpse、Navicat、Maven系统展示前台展示系统简介制造装备物联及生产管理ERP系统在对开发工具的选择上也很慎重,为了便于开发实现,选......