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

}

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

相关推荐
程序猿七度3 分钟前
【Arthas实战】使用场景与常用命令
java·jvm·arthas
陳長生.16 分钟前
JAVA EE(进阶)_进阶的开端
java·java-ee
录大大i33 分钟前
2_Spring【IOC容器中获取组件Bean】
java·spring
YOYO--小天34 分钟前
RK3588 ADB使用
linux·嵌入式硬件·adb
linab11237 分钟前
mybatis中的resultMap的association及collectio的使用
java·开发语言·mybatis
Strugglingler1 小时前
Shell 脚本
linux·bash·shell
fanTuanye1 小时前
Java基础知识总结(超详细整理)
java·开发语言
wu~9701 小时前
手撕四种常用设计模式(工厂,策略,代理,单例)
java·单例模式·设计模式·代理模式·抽象工厂模式·策略模式
计算机毕设定制辅导-无忧学长1 小时前
Spring Boot 与 RabbitMQ 的深度集成实践(一)
spring boot·rabbitmq·java-rabbitmq
孞㐑¥1 小时前
Linux之基础IO
linux·开发语言·c++·经验分享·笔记