从零开始学Spring Boot系列-集成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,你可以通过生产者发送消息,并通过消费者接收并处理这些消息了。

总结

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

文章转载自: ++代码匠心++

原文链接: https://www.cnblogs.com/daimajiangxin/p/18087329

体验地址: 引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构

相关推荐
indexsunny1 小时前
互联网大厂Java面试实战:从Spring Boot到微服务架构的技术问答解析
java·spring boot·redis·微服务·kafka·jwt·flyway
sheji34161 小时前
【开题答辩全过程】以 基于SpringBoot的疗养院管理系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
短剑重铸之日2 小时前
《设计模式》第六篇:装饰器模式
java·后端·设计模式·装饰器模式
像少年啦飞驰点、2 小时前
零基础入门 Spring Boot:从‘Hello World’到可上线微服务的完整学习路径
java·spring boot·web开发·编程入门·后端开发
1104.北光c°2 小时前
【从零开始学Redis | 第一篇】Redis常用数据结构与基础
java·开发语言·spring boot·redis·笔记·spring·nosql
码界奇点3 小时前
基于Flask与OpenSSL的自签证书管理系统设计与实现
后端·python·flask·毕业设计·飞书·源代码管理
看世界的小gui3 小时前
Jeecgboot通过Maxkey实现单点登录完整方案
java·spring boot·jeecgboot
10km3 小时前
Spring Boot 环境下使用 Map<String, MultipartFile> 实现文件上传功能
java·spring boot·mock·map·multipartfile
yangminlei4 小时前
使用 Cursor 快速创建一个springboot项目
spring boot·ai编程