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

}

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

相关推荐
初願致夕霞11 小时前
C/C++传统程序内存分布(代码实测)
java·c语言·c++
掉鱼的猫11 小时前
不只是 Token 流:Solon AI 4.1 的语义化聊天事件
java·openai
Dream Cosmos11 小时前
自旋锁:从忙等待、原子操作到线程同步
linux
她的男孩11 小时前
同一个接口,为什么销售只看到自己的订单?我拆了 681 行数据权限拦截器的源码
java·后端·架构
kaixin_啊啊11 小时前
PandaWiki 本地 AI 知识库实战:文档导入、智能问答与远程访问
linux·服务器·人工智能·windows·ai
元界metalite11 小时前
SpringBoot接口通用响应对象设计 - 一个 Resp 管理五种责任
后端
对象存储与RustFS11 小时前
把 RustFS 跑在 Kubernetes 上:官方 Helm Chart 从单机到分布式
后端·rust·开源
卓怡学长11 小时前
w157基于springboot北部湾地区助农平台
java·spring boot·spring·maven·intellij-idea
handler0111 小时前
【Linux】进程退出、等待与程序替换
linux·运维·exec·进程·进程等待·进程退出·程序替换
小白羊丨11 小时前
问数 Agent 整体架构、意图识别、历史上下文与 NL2SQL
java·面试·架构