写点什么

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

  • 2024-03-22
    福建
  • 本文字数:2205 字

    阅读完需:约 7 分钟

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
复制代码


  1. 下载 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
复制代码


  1. 启动 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 &
复制代码


  1. 使用 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'}
复制代码


  1. 配置 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
复制代码


  1. 创建生产者:使用 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); } }
复制代码


  1. 创建消费者:使用 @KafkaListener 注解监听 Kafka 中的消息。

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


  1. 创建控制器: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

体验地址:http://www.jnpfsoft.com/?from=001

用户头像

还未添加个人签名 2023-06-19 加入

还未添加个人简介

评论

发布
暂无评论
从零开始学Spring Boot系列-集成Kafka_kafka_快乐非自愿限量之名_InfoQ写作社区