SpringBoot 集成 kafka

SpringBoot 集成 kafka

第一步 通过 docker 启动 kafka

这个已经在前一篇文章详细描述了,这里就不在赘述了。没有看过的小伙伴可以去看这篇文章:docker启动kafka并挂载配置文件,并让外部环境连接kafka

第二步 创建 SpringBoot 工程,并引入 kafka 依赖

xml 复制代码
<?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 https://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>3.3.3</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <groupId>com.wanfeng</groupId>
    <artifactId>kafka-01-base</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <name>kafka-01-base</name>
    <description>kafka-01-base</description>


    <properties>
        <java.version>17</java.version>
    </properties>

    <dependencies>
        <!--SpringBoot 起步依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <!--kafka 依赖-->
        <dependency>
            <groupId>org.springframework.kafka</groupId>
            <artifactId>spring-kafka</artifactId>
        </dependency>

        <!--热部署插件-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <!--lombok 插件-->
        <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-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

第三步 编写 application.yml 文件

yaml 复制代码
spring:
  application:
    # 应用名称
    name: kafka-01-base
  kafka:
    # kafka 连接地址
    bootstrap-servers: 自己的 IP:9092

第四步 编写生产者

java 复制代码
package com.wanfeng.producer;

import jakarta.annotation.Resource;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.stereotype.Component;

/**
 * 作者:晚枫
 * 时间:2024/9/1 8:57
 */
@Component
public class EventProducer {

    @Resource
    private KafkaTemplate<String, String> kafkaTemplate;

    public void sendEvent() {
        // 参数一:kafka 主题名字
        // 参数二:需要发送的事件
        kafkaTemplate.send("hello", "喜欢欣宝");
    }

}

第五步 编写消费者

java 复制代码
package com.wanfeng.consumer;

import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Component;

/**
 * 作者:晚枫
 * 时间:2024/9/1 9:00
 */
@Component
public class EventConsumer {

    // 采用监听的方式接收事件
    // topics 指定需要监听的主题
    // groupId 指定消费者组 id
    @KafkaListener(topics = "hello", groupId = "hello-group")
    public void onEvent(String event) {
        System.out.println("接收到的事件为:" + event);
    }

}

第六步 编写测试方法

编写测试方法的目的就是让生产者发送事件

java 复制代码
package com.wanfeng;

import com.wanfeng.producer.EventProducer;
import jakarta.annotation.Resource;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class Kafka01BaseApplicationTests {

    @Resource
    private EventProducer eventProducer;

    @Test
    void sendEvent() {
        eventProducer.sendEvent();
    }

}

最后,先启动消费者对事件进行监听,然后再启动测试方法,让生产者发送事件,我们就可以在控制台看到事件被打印出来了!

相关推荐
HelloWord~34 分钟前
SpringSecurity+vue通用权限系统2
java·vue.js
让我上个超影吧35 分钟前
黑马点评【基于redis实现共享session登录】
java·redis
nuczzz37 分钟前
GPU虚拟化
docker·kubernetes·k8s·gpu·nvidia
yzx9910131 小时前
Linux 系统中的算法技巧与性能优化
linux·算法·性能优化
fengyehongWorld1 小时前
Linux Docker的简介
linux·docker
00后程序员1 小时前
提升移动端网页调试效率:WebDebugX 与常见工具组合实践
后端
HyggeBest1 小时前
Mysql的数据存储结构
后端·架构
TobyMint1 小时前
golang 实现雪花算法
后端
G探险者1 小时前
【案例解析】一次 TIME_WAIT 导致 TPS 断崖式下降的排查与优化
后端
曹瑞曹瑞1 小时前
VMware导入vmdk文件
linux·运维·服务器