当前位置: 首页 > news >正文

SpringBoot 集成 kafka

SpringBoot 集成 kafka

第一步 通过 docker 启动 kafka

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

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

<?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 文件

spring:application:# 应用名称name: kafka-01-basekafka:# kafka 连接地址bootstrap-servers: 自己的 IP:9092

第四步 编写生产者

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 {@Resourceprivate KafkaTemplate<String, String> kafkaTemplate;public void sendEvent() {// 参数一:kafka 主题名字// 参数二:需要发送的事件kafkaTemplate.send("hello", "喜欢欣宝");}}

第五步 编写消费者

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

第六步 编写测试方法

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

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 {@Resourceprivate EventProducer eventProducer;@Testvoid sendEvent() {eventProducer.sendEvent();}}

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Leetcode199二叉树的右视图(java实现)
  • SQLite 创建表:一场数据库里的“造物运动”
  • CAN总线简介
  • docker 拉取镜像出错
  • iOS App快捷指令(App Intents)在系统搜索服务中注册shortcuts
  • 详解JavaScript
  • 更适合编写股票盯盘软件或者量化交易平台的语言是Python还是C
  • Linux之grafana+onealert报警
  • 学习周报-2024.8.31
  • Tensor常见操作、自动微分及手动构建模型
  • 系统演示视频正确的录制顺序
  • 嵌入式Linux C应用编程指南-进程、线程(速记版)
  • 【SpringBoot】实体多层嵌套如何判空字段?
  • 前端面试——八股文
  • 开发中如何在运行/调试时将项目热部署到Tomcat
  • Akka系列(七):Actor持久化之Akka persistence
  • Angular 2 DI - IoC DI - 1
  • Angular数据绑定机制
  • CEF与代理
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • gops —— Go 程序诊断分析工具
  • PHP那些事儿
  • Service Worker
  • Shell编程
  • unity如何实现一个固定宽度的orthagraphic相机
  • vue-cli在webpack的配置文件探究
  • WePY 在小程序性能调优上做出的探究
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 双管齐下,VMware的容器新战略
  • 智能合约开发环境搭建及Hello World合约
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #AngularJS#$sce.trustAsResourceUrl
  • $(this) 和 this 关键字在 jQuery 中有何不同?
  • (Note)C++中的继承方式
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (三)Honghu Cloud云架构一定时调度平台
  • (十三)Maven插件解析运行机制
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (一)springboot2.7.6集成activit5.23.0之集成引擎
  • (转)Linux下编译安装log4cxx
  • (转)使用VMware vSphere标准交换机设置网络连接
  • .equals()到底是什么意思?
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .net CHARTING图表控件下载地址
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .net 后台导出excel ,word
  • .NET设计模式(8):适配器模式(Adapter Pattern)
  • .net中应用SQL缓存(实例使用)
  • @PostConstruct 注解的方法用于资源的初始化