深入解析:linux 安装Kafka 和springboot kaka实战

news/2026/1/22 9:01:55/文章来源:https://www.cnblogs.com/ljbguanli/p/19515027

深入解析:linux 安装Kafka 和springboot kaka实战

Kafka最初诞⽣于LinkedIn公司,其核⼼作⽤就是⽤来收集并处理庞⼤复杂的应⽤⽇志。⼀个典型的⽇志聚合 应⽤场景如下:

业务场景决定了产品的特点。所以Kafka最典型的产品特点有以下⼏点: 1、数据吞吐量很⼤: 需要能够快速收集各个渠道的海量⽇志 2、集群容错性⾼:允许集群中少量节点崩溃 3、功能不需要太复杂:Kafka的设计⽬标是⾼吞吐、低延迟和可扩展,主要关注消息传递⽽不是消息处理。所 以,Kafka并没有⽀持死信队列、顺序消息等⾼级功能。 4、允许少量数据丢失:在海量的应⽤⽇志中,少量的⽇志丢失是不会影响结果的。所以Kafka的设计初衷是允 许少量数据丢失的。当然Kafka本身也在不断优化数据安全问题

快速上⼿Kafka

1.快速搭建单机服务

Kafka的运⾏环境⾮常简单,只要有JVM虚拟机就可以进⾏。这⾥,我们使⽤⼀台安装了JDK1.8的kakfka。 JDK的安装过程略 下载Kafka。

官⽹下载地址: https://kafka.apache.org/downloads 这⾥我们选择下载kafka_2.13-3.8.0.tgz 关于kafka的版本,前⾯的2.13是开发kafka的scala语⾔的版本,后⾯的3.8.0是kafka应⽤的版本。 Scala是⼀种运⾏于JVM虚拟机之上的语⾔。

在运⾏时,只需要安装JDK就可以了,选哪个Scala版本没有 区别。但是如果要调试源码,就必须选择对应的Scala版本。因为Scala语⾔的版本并不是向后兼容的。

。 kafka的安装程序中⾃带了Zookeeper,可以在kafka的安装包的libs⽬录下查看到zookeeper的客户端jar 包。但是,通常情况下,为了让应⽤更好维护,我们会使⽤单独部署的Zookeeper,⽽不使⽤kafka⾃带 的Zookeeper。

下载下来的Kafka安装包不需要做任何的配置,就可以直接单击运⾏。这通常是快速了解Kafka的第⼀步。 启动Kafka之前需要先启动Zookeeper 这⾥就⽤Kafka⾃带的Zookeeper。启动脚本在bin⽬录下

优先启动zookeeper

bin/zookeeper-server-start.sh config/zookeeper.properties 

可以看到zookeeper默认会在2181端⼝启动。通过进程指令看到⼀个QuorumPeerMain进程,确 定服务启动成功

启动Kafka

bin/kafka-server-start.sh config/server.properties

看到端口9092已经启动,kakfka已经启动了。

2、简单收发消息

Kafka的基础⼯作机制是消息发送者可以将消息发送到kafka上指定的topic,⽽消息消费者,可以从指定的 topic上消费消息

⾸先,可以使⽤Kafka提供的客户端脚本创建Topic

#
创建
Topic
 bin/kafka-topics.sh --create --topic test --bootstrap-server 192.168.33.10:9092


#
查看
Topic

bin/kafka-topics.sh --describe --topic test --bootstrap-server 192.168.33.10:9092

然后,启动⼀个消息发送者端。往⼀个名为test的Topic发送消息。  

bin/kafka-console-producer.sh --broker-list 192.168.33.10:9092 --topic test

当命令⾏出现 > 符号后,随意输⼊⼀些字符。Ctrl+C 退出命令⾏。这样就完成了往kafka发消息的操作。

然后启动⼀个消息消费端,从名为test的Topic上接收消息。

bin/kafka-console-consumer.sh --bootstrap-server 192.168.33.10:9092 --topic test  

这样就完成了⼀个基础的交互。这其中,⽣产者和消费者并不需要同时启动。他们之间可以进⾏数据交互,但 是⼜并不依赖于对⽅。没有⽣产者,消费者依然可以正常⼯作,反过来,没有消费者,⽣产者也依然可以正常 ⼯作。这也体现出了⽣产者和消费者之间的解耦

3.其他消费模式

之前我们通过kafka提供的⽣产者和消费者脚本,启动了⼀个简单的消息⽣产者以及消息消费者,实际上, kafka还提供了丰富的消息消费⽅式

之前我们通过kafka提供的⽣产者和消费者脚本,启动了⼀个简单的消息⽣产者以及消息消费者,实际上, kafka还提供了丰富的消息消费⽅式。 指定消费进度 通过kafka-console.consumer.sh启动的控制台消费者,会将获取到的内容在命令⾏中输出。如果想要消费之 前发送的消息,可以通过添加--from-begining参数指定

bin/kafka-console-consumer.sh --bootstrap-server 192.168.33.10:9092 --from-beginning --topic 
test 

如果需要更精确的消费消息,甚⾄可以指定从哪⼀条消息开始消费。

bin/kafka-console-consumer.sh --bootstrap-server 192.168.33.10:9092 --partition 0 --offset 4 --topic test

可以看到从第4条消息开始消费。

4、消费者组

对于每个消费者,可以指定⼀个消费者组。kafka中的同⼀条消息,只能被同⼀个消费者组下的某⼀个消费者 消费。⽽不属于同⼀个消费者组的其他消费者,也可以消费到这⼀条消息。在kafka-console-consumer.sh脚 本中,可以通过--consumer-property group.id=testGroup来指定所属的消费者组。例如,可以启动三个消费 者组,来验证⼀下分组消费机制

#
这个消费者实例属于不同的消费者组 
bin/kafka-console-consumer.sh --bootstrap-server 192.168.33.10:9092 --consumer-property group.id=xxyjGroup --topic test 


#
这个消费者实例属于不同的消费者组 
bin/kafka-console-consumer.sh --bootstrap-server 192.168.33.10:9092 --consumer-property group.id=xxyjGroup2 --topic test

接下来,还可以使⽤kafka-consumer-groups.sh观测消费者组的情况。包括他们的消费进度。

下面可以通过代码来实现生产者消费着的过程;

pom文件引入kafka

org.springframework.kafkaspring-kafka
application.properties配置kafka信息:
spring.kafka.bootstrap-servers=192.168.33.10:9092
spring.kafka.consumer.group-id=my-group
spring.kafka.consumer.auto-offset-reset=earliest
spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.consumer.value-deserializer=org.springframework.kafka.support.serializer.JsonDeserializer
spring.kafka.consumer.properties.spring.json.trusted.packages=*
spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.producer.value-serializer=org.springframework.kafka.support.serializer.JsonDeserializer

注入bean

实现类:

注入监听消费者KafkaListener

接口:

启动后通过接口发送消息:

发送消息:

通过对象也一样:

监听消费:

以上简单介绍kafka 的单机部署实例,后面讲集群部署,不像rocketmq消息集群,kafka依赖于zookeeper做负载均衡

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

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

相关文章

DeepSeek-R1-Distill-Qwen-1.5B自动化测试:API稳定性验证方案

DeepSeek-R1-Distill-Qwen-1.5B自动化测试:API稳定性验证方案 1. 引言:为什么我们需要API稳定性验证? 你有没有遇到过这种情况:模型服务明明部署好了,接口也能调通,但跑着跑着突然响应变慢、返回乱码&…

原型链查找的 O(N) 开销:在超长继承链下属性访问的性能损耗实验 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

YOLOv13镜像实战:快速构建校园安全监控Demo

YOLOv13镜像实战:快速构建校园安全监控Demo 在智慧校园建设不断推进的今天,如何利用AI技术提升校园安全管理效率,成为教育机构关注的重点。传统监控系统依赖人工回看录像,不仅耗时耗力,还容易遗漏关键事件。而基于目标…

IndexTTS-2批量合成实战:自动化语音生成部署教程

IndexTTS-2批量合成实战:自动化语音生成部署教程 Sambert 多情感中文语音合成——开箱即用版。本镜像基于阿里达摩院 Sambert-HiFiGAN 模型,已深度修复 ttsfrd 二进制依赖及 SciPy 接口兼容性问题。内置 Python 3.10 环境,支持知北、知雁等多…

OCR实战应用:用cv_resnet18_ocr-detection提取发票信息全记录

OCR实战应用:用cv_resnet18_ocr-detection提取发票信息全记录 1. 为什么选择cv_resnet18_ocr-detection做发票识别? 在财务自动化和企业数字化转型中,发票信息提取是高频刚需场景。每天成百上千张增值税专用发票、普通发票、电子发票需要人…

2026年水泥假山建造优质服务商推荐榜

2026年水泥假山建造优质服务商推荐榜一、行业背景与筛选维度《2025-2030年中国文旅景观行业发展白皮书》数据显示,乡村振兴及文旅项目中,假山景观作为民宿核心配套设施,可提升项目客流转化率32%,带动民宿入住率提升…

新手必看!YOLOv9官方版镜像从0到推理全流程

新手必看!YOLOv9官方版镜像从0到推理全流程 你是不是也经历过这样的场景:好不容易下定决心要动手跑一个目标检测模型,结果光是配置环境就花了大半天?PyTorch版本不对、CUDA不兼容、依赖包冲突……这些问题让很多刚入门的同学望而…

热门的波纹式脱硝催化剂品牌2026年哪家质量好?深度测评

在2026年环保行业快速发展的背景下,选择优质的波纹式脱硝催化剂对企业实现超低排放至关重要。本文基于产品性能、技术创新、市场反馈及服务能力等核心指标,对当前市场上表现突出的品牌进行深度测评。经过全面评估,山…

Emotion2Vec+ Large集群部署:多节点负载均衡方案设计

Emotion2Vec Large集群部署:多节点负载均衡方案设计 1. 引言:为什么需要集群化部署? Emotion2Vec Large 是一个高性能的语音情感识别模型,具备强大的特征提取能力与高精度的情感分类表现。然而,单机部署在面对高并发…

学生党福音!低成本搭建PyTorch深度学习环境的方法

学生党福音!低成本搭建PyTorch深度学习环境的方法 1. 为什么学生更需要“开箱即用”的AI开发环境? 对于大多数学生来说,搞深度学习最头疼的不是模型不会调,而是环境装不上。明明代码写得没问题,一运行就报错&#xf…

YOLOE镜像使用全解析,一文看懂全部功能组件

YOLOE镜像使用全解析,一文看懂全部功能组件 你是否试过在深夜调试目标检测模型,却卡在环境配置上?下载权重、编译CUDA扩展、解决torch版本冲突……还没开始推理,GPU显存就先被报错占满。更别提开放词汇检测这种新范式——传统YOL…

C#异步与多线程:从入门到实战,避免踩坑的完整指南

本文深入探讨了C#异步与多线程编程的核心概念、发展历程及实战应用。从早期APM/EAP模式到现代async/await范式,系统解析了异步编程的原理与常见误区。通过丰富的代码示例,展示了如何避免UI卡顿、实现并发控制、处理异…

自动驾驶路牌识别预研:cv_resnet18_ocr-detection初步测试

自动驾驶路牌识别预研:cv_resnet18_ocr-detection初步测试 在自动驾驶系统的感知模块中,交通标志与文字信息的准确识别是实现环境理解的重要一环。尤其是在城市复杂道路场景下,路牌上的限速、禁行、方向指引等文本内容对决策系统具有直接指导…

NotaGen镜像详解:一键生成高质量古典符号化音乐

NotaGen镜像详解:一键生成高质量古典符号化音乐 1. 快速上手NotaGen音乐生成系统 你是否曾幻想过,只需轻点几下鼠标,就能创作出一段优雅的巴赫风格赋格,或是充满浪漫主义气息的肖邦夜曲?现在,这一切不再是…

实战案例:用fft npainting lama清除广告水印全过程

实战案例:用fft npainting lama清除广告水印全过程 1. 引言:为什么需要高效去水印工具? 你有没有遇到过这种情况?好不容易找到一张满意的图片,结果上面却盖着醒目的广告水印。手动修图费时费力,PS技术门槛…

开放词汇表检测新选择:YOLOE镜像全面测评

开放词汇表检测新选择:YOLOE镜像全面测评 在智能安防监控中心的大屏前,值班人员正通过AI系统实时分析数十路摄像头画面。突然,一个从未在训练集中出现过的新型无人机出现在视野中——传统目标检测模型对此类“未知物体”往往束手无策&#x…

IQuest-Coder-V1如何降低部署门槛?轻量化变体应用指南

IQuest-Coder-V1如何降低部署门槛?轻量化变体应用指南 1. 为什么IQuest-Coder-V1值得关注? 你可能已经听说过不少代码大模型,但真正能在复杂任务中“想清楚、写对代码”的却不多。IQuest-Coder-V1-40B-Instruct 就是其中的佼佼者——它不是…

告别繁琐配置!用科哥镜像快速搭建阿里Paraformer语音识别系统

告别繁琐配置!用科哥镜像快速搭建阿里Paraformer语音识别系统 你是不是也经历过为了跑一个语音识别模型,花上一整天时间配环境、装依赖、调参数,结果还因为版本不兼容或路径错误导致运行失败?尤其是像阿里开源的SeACo-Paraformer…

杰理之蓝牙发射器发射源选择【篇】

发射源通过切模式来选择,默认已做好,需要开启蓝牙后台,比如需要发射linein 的音频,则连接上接收器之后,发射端切模式到linein模式,即可发射linein 的音频到接收端播放。

私有化部署+高精度翻译|HY-MT1.5-7B在VuePress中的落地实践

私有化部署高精度翻译|HY-MT1.5-7B在VuePress中的落地实践 在开源项目、技术产品走向全球的今天,多语言文档早已不是“可有可无”的附加项,而是决定用户能否顺利上手、社区是否活跃的核心基础设施。尤其对于开发者工具、框架或平台类产品而言…