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();
    }

}

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

相关推荐
这题怎么做?!?4 分钟前
【Linux】多线程:线程同步、条件变量
linux·c语言·开发语言
武昌库里写JAVA17 分钟前
玩转springboot之springboot热部署
java·c语言·开发语言·数据结构·算法
blammmp19 分钟前
Java:抽象类和接口(1)
java·开发语言
lzhdim33 分钟前
2、.Net 前端框架:ASP.Net Core - .Net宣传系列文章
后端·前端框架·asp.net·.net
G皮T34 分钟前
【MyBatis】Java 数据持久层框架:认识 MyBatis
spring boot·spring·mybatis·框架·orm·dao
customer0836 分钟前
【开源免费】基于SpringBoot+Vue.JS房产销售系统(JAVA毕业设计)
java·vue.js·spring boot·spring cloud·java-ee·eclipse·maven
雨凝12132839 分钟前
K8s 之控制器的定义及详细调用案例
docker·容器·kubernetes
叶 落39 分钟前
Ruoyi Cloud K8s 部署
云原生·容器·kubernetes
周湘zx40 分钟前
k8s中控制器的使用
linux·运维·云原生·容器·kubernetes
哒哒-blog42 分钟前
【Kubernetes】(K8S)彻底卸载详细教程
云原生·容器·kubernetes