在 Spring Boot 2.7.x 中引入 Kafka-0.9 的实践

文章目录

  • 在 Spring Boot 2.7.x 中引入 Kafka-0.9 的实践
    • 一、下载 Kafka-0.9
    • 二、启动 Zookeeper 和 Kafka
    • 三、创建 Spring Boot 项目
    • 四、引入 kafka 依赖
    • 五、移除 Kafka 自动配置
    • 六、编写 Kafka 生产者
      • 6.1 Kafka配置类
      • 6.2 生产者监听类
    • 七、编写Controller发送Kafka
    • 八、验证消费者
    • Other. Spring Boot 引入 Kafka-0.11

在 Spring Boot 2.7.x 中引入 Kafka-0.9 的实践

一、下载 Kafka-0.9

# 1. 下载
wget https://archive.apache.org/dist/kafka/0.11.0.0/kafka_2.11-0.11.0.0.tgz# 2. 解压
tar -zxvf kafka_2.11-0.11.0.0.tgz# 3. 进入kafka目录
cd kafka_2.11-0.11.0.0

二、启动 Zookeeper 和 Kafka

# 1. 启动 zk 
bin/zookeeper-server-start.sh config/zookeeper.properties# 2. 启动 kafka
bin/kafka-server-start.sh config/server.properties# 3. 创建topic
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic user_topic# 4. 消费
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic user_topic --from-beginning

三、创建 Spring Boot 项目

https://blog.csdn.net/Agan__/article/details/136109762
https://start.spring.io/

四、引入 kafka 依赖

<dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId><version>1.0.5.RELEASE</version>
</dependency><dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>0.9.0.0</version>
</dependency>

五、移除 Kafka 自动配置

@SpringBootApplication(exclude = {KafkaAutoConfiguration.class})

六、编写 Kafka 生产者

6.1 Kafka配置类

package com.chenjiacheng.samples.kafka.config;import com.chenjiacheng.samples.kafka.kafka.UserProducerListener;
import lombok.extern.slf4j.Slf4j;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.common.serialization.StringSerializer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.kafka.core.DefaultKafkaProducerFactory;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.kafka.core.ProducerFactory;
import org.springframework.kafka.support.ProducerListener;import java.util.HashMap;
import java.util.Map;/*** Created by chenjiacheng on 2025/2/27 01:18** @author chenjiacheng* @since 1.0.0*/
@Slf4j
@Configuration
public class KafkaProducerConfig {@Autowiredprivate UserProducerListener userProducerListener;// 配置 User Topic 的 KafkaTemplate 和 ProducerListener@Bean(name = "userProducerFactory")public ProducerFactory<String, String> userProducerFactory() {Map<String, Object> configProps = new HashMap<>();configProps.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:19092");configProps.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);configProps.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);return new DefaultKafkaProducerFactory<>(configProps);}@Bean(name = "userKafkaTemplate")public KafkaTemplate<String, String> userKafkaTemplate() {KafkaTemplate<String, String> kafkaTemplate = new KafkaTemplate<>(userProducerFactory());kafkaTemplate.setProducerListener(userProducerListener);kafkaTemplate.setDefaultTopic("user");return kafkaTemplate;}
}

6.2 生产者监听类

package com.chenjiacheng.samples.kafka.kafka;import lombok.extern.slf4j.Slf4j;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.clients.producer.RecordMetadata;
import org.springframework.kafka.support.ProducerListener;
import org.springframework.stereotype.Component;@Slf4j
@Component
public class UserProducerListener implements ProducerListener<String, String> {@Overridepublic void onSuccess(String topic, Integer partition, String key, String value, RecordMetadata recordMetadata) {log.info("User message sent successfully: {}", value);}@Overridepublic void onError(String topic, Integer partition, String key, String value, Exception exception) {log.error("Failed to send user message: {}", value, exception);}@Overridepublic boolean isInterestedInSuccess() {return true;}
}

七、编写Controller发送Kafka

package com.chenjiacheng.samples.kafka.controller;import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@RestController
public class KafkaController {@Autowiredprivate KafkaTemplate<String, String> orderKafkaTemplate;@GetMapping("/send/user")public String sendUserMessage(@RequestParam("message") String message) {orderKafkaTemplate.sendDefault(message);return "User message sent: " + message;}
}

八、验证消费者

curl --location --globoff 'http://localhost:8081/send/user?message=hello'

在这里插入图片描述

Other. Spring Boot 引入 Kafka-0.11

其他操作同上, 仅修改依赖版本号. 也可直接使用 SpingBoot 依赖管理的 spring-kafka.

<dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId><version>1.3.11.RELEASE</version>
</dependency><dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>0.11.0.0</version>
</dependency>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/71634.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

字符串中的数字之和

题目描述 程序要求能够提取输入的字符串中的数字&#xff0c;将数字累加&#xff0c;得到数字之和&#xff0c;如输入的字符串为"abc76wet23er1.",应该提取数字76,23,1,求和后&#xff0c;即76231100。 输入格式: 输入一个字符串&#xff0c;字符串长度不超过100.…

77.ObservableCollection使用介绍1 C#例子 WPF例子

可观察集合ObservableCollection using System; using System.Collections.ObjectModel;class Program {static void Main(){// 创建一个可观察集合ObservableCollection<string> list new ObservableCollection<string>();// 注册集合变化事件list.CollectionCh…

ORACLE 执行查询语句慢(不走对应索引)

1. 索引未被创建或未正确创建 确保为查询中涉及的列创建了索引。例如&#xff0c;如果你经常需要按column_name列进行查询&#xff0c;确保已经为该列创建了索引,索引创建语句 CREATE INDEX idx_column_name ON table_name(column_name); 2、索引不可用 原因:索引可能被标记为不…

r1-reasoning-rag:一种新的 RAG 思路

最近发现了一个开源项目&#xff0c;它提供了一种很好的 RAG 思路&#xff0c;它将 DeepSeek-R1 的推理能力结合 Agentic Workflow 应用于 RAG 检索 项目地址 https://github.com/deansaco/r1-reasoning-rag.git 项目通过结合 DeepSeek-R1、Tavily 和 LangGraph&#xff0c;实现…

服务器硬件配置统计

服务器型号和SN # dmidecode -t system | grep -E "Product Name|Serial Number" | awk -F: {print $2} PowerEdge R7515 4567CPU型号和物理CPU数量 echo "$(lscpu | grep "Model name" | cut -d : -f2 | sed s/^ *//) x $(lscpu | grep "Soc…

Hadoop、Spark、Flink Shuffle对比

一、Hadoop的shuffle 前置知识&#xff1a; Map任务的数量由Hadoop框架自动计算&#xff0c;等于分片数量&#xff0c;等于输入文件总大小 / 分片大小&#xff0c;分片大小为HDFS默认值128M&#xff0c;可调 Reduce任务数由用户在作业提交时通过Job.setNumReduceTasks(int)设…

Docker的常用镜像

Docker的常用镜像命令主要包括镜像的查看、搜索、拉取、删除、构建等操作&#xff0c;以下是综合多个来源的总结&#xff1a; 一、基础镜像操作 查看本地镜像 docker images• 显示所有本地镜像&#xff0c;包含仓库名&#xff08;REPOSITORY&#xff09;、标签&#xff08;TAG…

车载以太网测试-3【Wireshark介绍】

1 摘要 Wireshark 是一款开源的网络协议分析工具&#xff0c;广泛用于网络故障排查、协议分析、网络安全检测等领域。它能够捕获网络数据包&#xff0c;并以详细的、可读的格式显示这些数据包的内容。广泛应用于车载网络测试&#xff0c;是车载网络测试工程师必须掌握的工具。…

基于跨模态地图学习的视觉语言导航

前言 本工作开展的背景&#xff1a; 人类和其他物种构建类似地图的环境表示来完成寻路&#xff1a; &#xff08;1&#xff09;当人类只使用现成的驾驶或步行路径到达目标时&#xff0c;构建认知地图和获取空间知识的能力就会下降&#xff1b; &#xff08;2&#xff09;另…

nodejs关于后端服务开发的探究

前提 在当前的环境中关于web server的主流开发基本上都是java、php之类的&#xff0c;其中java spring系列基本上占了大头&#xff0c;而python之流也在奋起直追&#xff0c;但别忘了nodejs也是可以做这个服务的&#xff0c;只是位置有点尴尬&#xff0c;现在就来探究下nodejs…

Ubuntu20.04本地配置IsaacGym Preview 4的G1训练环境(一)

Ubuntu20.04本地配置IsaacGym Preview 4的G1训练环境 配置conda虚拟环境安装pytorch、cuda和cudnn安装IsaacGym Preview 4配置rsl_rl配置unitree_rl_gym配置unitree_sdk2py 写在前面&#xff0c;要求完成anaconda配置&#xff0c;若没完成&#xff0c;请参考本人其余博客&#…

RangeError: Maximum call stack size exceeded

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 &#x1f35a; 蓝桥云课签约作者、…

八卡5090服务器首发亮相!

AI 人工智能领域热度居高不下。OpenAI 的 GPT - 4 凭强悍语言处理能力&#xff0c;在内容创作、智能客服等领域广泛应用。清华大学团队的 DeepSeek 大模型在深度学习训练优势突出&#xff0c;正促使各行业应用端算力需求向推理主导转变&#xff0c;呈爆发式增长 。 随着 DeepS…

计算机视觉|Swin Transformer:视觉 Transformer 的新方向

一、引言 在计算机视觉领域的发展历程中&#xff0c;卷积神经网络&#xff08;CNN&#xff09; 长期占据主导地位。从早期的 LeNet 到后来的 AlexNet、VGGNet、ResNet 等&#xff0c;CNN 在图像分类、目标检测、语义分割等任务中取得了显著成果。然而&#xff0c;CNN 在捕捉全…

【Leetcode 每日一题】2597. 美丽子集的数目

问题背景 给你一个由正整数组成的数组 n u m s nums nums 和一个 正 整数 k k k。 如果 n u m s nums nums 的子集中&#xff0c;任意两个整数的绝对差均不等于 k k k&#xff0c;则认为该子数组是一个 美丽 子集。 返回数组 n u m s nums nums 中 非空 且 美丽 的子集数…

常见Web应用源码泄露问题

文章目录 前言一、常见的源码泄露漏洞git源码泄露SVN源码泄露DS_Store文件泄漏网站备份压缩文件泄露WEB-INF/web.xml泄露CVS泄露.hg源码泄露Bazaar/bzr泄露.swp文件泄露 前言 在Web应用方面对于安全来说&#xff0c;可能大家对SQL注入、XSS跨站脚本攻击、文件上传等一些漏洞已…

记录一次wifi版有人物联串口服务器调试经过

1、首先买了一个华为的wifi路由器&#xff0c;连接上以后&#xff0c;设置好网络名字和wifi密码 2、用网线连接串口服务器&#xff0c;通过192.168.1.1登录&#xff0c;进行配置 找到无线客户端配置&#xff0c;先在基本配置中打开5G配置&#xff0c;然后再去5.8G配置中设置 …

Android 平台架构系统启动流程详解

目录 一、平台架构模块 1.1 Linux 内核 1.2 硬件抽象层 (HAL) 1.3 Android 运行时 1.4 原生 C/C 库 1.5 Java API 框架 1.6 系统应用 二、系统启动流程 2.1 Bootloader阶段 2.2 内核启动 2.3 Init进程&#xff08;PID 1&#xff09; 2.4 Zygote与System Serv…

【Windows下Gitbook快速入门使用】

Windows下Gitbook快速入门使用 1 工具安装1.1 Node.js下载安装1.1 环境变量1.2 npm配置1.3 安装gitbook 2 gitbook使用2.1 gitbook 无法执行2.2 gitbook常用命令 Gitbook是一个软件&#xff0c;使用Git和Markdown来编排书本&#xff1b; GitBook helps you pushlish beautiful …

RK3588V2--HYM8563TS RTC 实时时钟适配移植

1. 什么是RTC RTC&#xff08;Real-Time Clock&#xff0c;实时时钟&#xff09;是一种电子设备或芯片&#xff0c;它用于保持当前时间和日期&#xff0c;即使系统关闭或断电也能持续计时。RTC 通常用于计算机、嵌入式系统、物联网设备等需要精确时间管理的场景。 1.1 RTC 的…