Kafka Windows 安装启动与 YAML 配置全解析 - 实践

news/2025/10/3 15:47:30/文章来源:https://www.cnblogs.com/yxysuanfa/p/19124674

Kafka Windows 安装启动与 YAML 配置全解析

一、Kafka Windows 版安装与启动

1. 下载地址

Kafka 官方提供了适用于 Windows 的二进制包,下载地址:
Apache Kafka 官方下载
建议选择最新的稳定版本(如 kafka_2.13-3.6.1.tgz,其中 2.13 是 Scala 版本,3.6.1 是 Kafka 版本)

2. 安装步骤

  1. 解压文件:使用解压工具(如 WinRAR、7-Zip)将下载的 tgz 文件解压到本地目录(建议路径无空格和中文),例如:D:\kafka_2.13-3.6.1

  2. 配置环境变量(可选)

    • 新增环境变量 KAFKA_HOME,值为 Kafka 解压路径(如 D:\kafka_2.13-3.6.1
    • Path 变量中添加 %KAFKA_HOME%\bin\windows

3. 启动服务

Kafka 依赖 Zookeeper,需要先启动 Zookeeper,再启动 Kafka 服务器。

启动 Zookeeper

打开命令提示符(CMD)或 PowerShell,执行以下命令:

# 切换到 Kafka 目录
cd D:\kafka_2.13-3.6.1
# 启动 Zookeeper(使用默认配置)
bin\windows\zookeeper-server-start.bat config\zookeeper.properties
启动 Kafka 服务器

打开另一个命令提示符窗口,执行:

# 切换到 Kafka 目录
cd D:\kafka_2.13-3.6.1
# 启动 Kafka 服务器(使用默认配置)
bin\windows\kafka-server-start.bat config\server.properties
创建测试主题

再打开一个命令提示符窗口,执行:

# 创建名为 test-topic 的主题
bin\windows\kafka-topics.bat --create --topic test-topic --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1
# 查看所有主题
bin\windows\kafka-topics.bat --list --bootstrap-server localhost:9092
停止服务
  • 停止 Kafka 服务器:在启动窗口按 Ctrl+C
  • 停止 Zookeeper:在启动窗口按 Ctrl+C

二、Spring Boot Kafka 完整 YAML 配置详解

以下是 application.yml 中所有可能用到的 Kafka 配置项,按功能分类说明:

spring:
kafka:
# 1. 基础配置
bootstrap-servers: localhost:9092  # Kafka 服务器地址,集群用逗号分隔(如:host1:9092,host2:9092)
client-id: my-kafka-client         # 客户端ID,用于标识请求来源,默认自动生成
properties:                        # 通用属性(适用于生产者、消费者、admin)
security.protocol: PLAINTEXT     # 安全协议(PLAINTEXT/SASL_PLAINTEXT/SASL_SSL/SSL)
sasl.mechanism: GSSAPI           # SASL 机制(如使用安全认证时配置)
ssl.truststore.location: classpath:kafka.truststore.jks  # SSL 信任库路径
# 2. 生产者配置(spring.kafka.producer)
producer:
# 序列化配置
key-serializer: org.apache.kafka.common.serialization.StringSerializer  # 键序列化器
value-serializer: org.springframework.kafka.support.serializer.JsonSerializer  # 值序列化器
# 消息确认机制
acks: 1  # 0:不等待确认;1:等待首领副本确认;all:等待所有同步副本确认(最可靠)
# 重试配置
retries: 3  # 发送失败重试次数
retry-backoff-ms: 1000  # 重试间隔(毫秒)
# 批量发送配置
batch-size: 16384  # 批量发送的大小阈值(字节),默认16KB
linger-ms: 0       # 批量发送的延迟时间(毫秒),默认0(立即发送)
buffer-memory: 33554432  # 发送缓冲区大小(字节),默认32MB
# 压缩配置
compression-type: none  # 消息压缩类型(none/gzip/snappy/lz4/zstd)
# 事务配置(启用事务时需要)
transaction-id-prefix: tx-  # 事务ID前缀,用于标识事务生产者
# 其他属性
max-block-ms: 60000  # 获取元数据或缓冲区满时的阻塞超时时间
max-request-size: 1048576  # 单个请求的最大大小(字节),默认1MB
# 3. 消费者配置(spring.kafka.consumer)
consumer:
# 反序列化配置
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer  # 键反序列化器
value-deserializer: org.springframework.kafka.support.serializer.JsonDeserializer  # 值反序列化器
# 基础配置
group-id: my-consumer-group  # 消费者组ID,必须配置
client-id: ${spring.kafka.client-id}-consumer  # 消费者客户端ID
# 偏移量配置
auto-offset-reset: earliest  # 无偏移量记录时的策略:earliest(从头读)/latest(从最新)/none(报错)
enable-auto-commit: false    # 是否自动提交偏移量,默认true
auto-commit-interval: 5000   # 自动提交间隔(毫秒),默认5000
# 拉取配置
fetch-min-size: 1  # 每次拉取的最小数据量(字节),默认1
fetch-max-wait-ms: 500  # 拉取等待超时时间(毫秒),默认500
max-poll-records: 500   # 每次poll()拉取的最大记录数,默认500
max-poll-interval-ms: 300000  # 两次poll之间的最大间隔(毫秒),默认5分钟
# 其他属性
heartbeat-interval-ms: 3000  # 消费者向协调器发送心跳的间隔,默认3000
session-timeout-ms: 10000    # 会话超时时间,默认10秒
properties:
spring.json.trusted.packages: "*"  # JSON反序列化信任的包,*表示所有
spring.json.use.type.headers: true  # 是否使用类型头信息进行反序列化
# 4. 监听器配置(spring.kafka.listener)
listener:
# 偏移量提交模式
ack-mode: manual_immediate  # 提交模式:
# - none:不提交
# - auto:自动提交(依赖enable-auto-commit)
# - manual:手动调用Acknowledge.acknowledge()
# - manual_immediate:手动调用后立即提交
# 并发配置
concurrency: 3  # 消费者并发数,建议不超过主题分区数
max-concurrency: 10  # 最大并发数
# 批量消费配置
batch-listener: false  # 是否启用批量消费,默认false
batch-error-handler: batchLoggingErrorHandler  # 批量消费错误处理器
# 重试配置
retry:
enabled: true  # 是否启用重试,默认false
max-attempts: 3  # 最大重试次数
backoff:
initial-interval: 1000  # 初始重试间隔(毫秒)
multiplier: 2.0         # 间隔乘数
max-interval: 10000     # 最大重试间隔(毫秒)
# 其他配置
poll-timeout: 3000  # poll()方法超时时间(毫秒)
idle-event-interval: 60000  # 空闲事件发布间隔(毫秒)
log-container-config: true  # 是否记录容器配置信息
# 5. Admin客户端配置(用于管理主题等)
admin:
client-id: ${spring.kafka.client-id}-admin  # Admin客户端ID
fail-fast: true  # 连接失败时是否快速失败,默认false
properties:
retry.backoff.ms: 1000  # Admin操作重试间隔
timeout: 30000  # 操作超时时间(毫秒)

三、配置注意事项

  1. 版本兼容性:确保 spring-kafka 版本与 Kafka 服务器版本兼容(参考官方文档)

  2. 序列化/反序列化

    • 生产者和消费者的序列化器/反序列化器必须匹配
    • 使用 JSON 序列化时,需配置 spring.json.trusted.packages 避免安全限制
  3. 偏移量提交

    • 生产环境建议使用 manual_immediate 模式,确保消息处理完成后再提交偏移量
    • 自动提交(enable-auto-commit: true)可能导致消息未处理但偏移量已提交,造成数据丢失
  4. 并发配置

    • 消费者并发数(concurrency)不应超过主题的分区数,否则多余的消费者会空闲
    • 分区数决定了最大并行处理能力,合理规划分区数量
  5. Windows 特有问题

    • 路径分隔符使用 \ 而非 /
    • 启动脚本需使用 bin\windows 目录下的 .bat 文件
    • 若出现端口占用,可修改 config/server.properties 中的 port 配置(默认9092)

通过以上配置,你可以根据实际需求灵活调整 Kafka 在 Spring Boot 中的行为,平衡性能与可靠性。

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

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

相关文章

昆明专业建站装修设计公司服务

参考链接 FFmpeg源代码简单分析:avcodec_close()_雷霄骅的博客-CSDN博客_avcodec_close avcodec_close() 该函数用于关闭编码器avcodec_close()函数的声明位于libavcodec\avcodec.h,如下所示。 ​该函数只有一个参数,就是需要关闭的编码器的…

使用rem布局的网站网站开发5人小组分工

. 单论品牌(主要以登山鞋及徙步鞋为主): 高级品牌:SCARPA、ASOLO、MONTRAIL、ZAMBERLAN、vasque、Lowa、La Sportiva 价格都较高,单价都在千元以上,品质一流,做工精细。 中档品牌:Tr…

详细介绍:计算机视觉:OpenCV+Dlib 人脸检测

详细介绍:计算机视觉:OpenCV+Dlib 人脸检测pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &qu…

怀化 网站建设国内网页加速器

文章目录 企业无线局域网部署最佳实践引言1. 无线网规划和设计a. 选择合适的频宽b. 网络规划工具c. 考虑物理环境d. 用户密度和需求e. 未来扩展f. 安全性和策略g. 测试和验证2. 无线局域网容量2.1 用户和设备预测2.2 应用流量分析2.3 带宽管理2.4 无线技术选择2.5 网络健康检查…

python 老生常谈的找2个excel相同列的行,把其中一个excel行的对应的值放入到另一个excel中

有个excel叫典型草原降水强度,还有个excel叫典型草原数浓度,这两个excel里面time和data_name列,time列里面的数据格式是YYYY-M-D空格H:S,data_name列里面是XXXX-时间戳,53192-20240510101700-20240510105559-0_N…

可信网站标识河南省考生服务平台官网

目录 服务端这么做服务端告知客户端使用 Basic Authentication 方式进行认证服务端接收并处理客户端按照 Basic Authentication 方式发送的数据 客户端这么做如果客户端是浏览器如果客户端是 RestTemplat如果客户端是 HttpClient 其它参考 服务端这么做 服务端告知客户端使用 …

wordpress建站优缺点服务中心网站建设意见

less 用来浏览超过一页的文件 用 / 可用来查找关键字 q键退出 cat -n 3.txt | less行号显示grep 文本处理工具,以行为单位找关键字 ls -l /boot | grep ^l grep 关键字 文件名 grep runlevel /etc/inittab 参数 -i忽略大小写 -n显示行号 -v排除关键字&#xff0…

【K8S】Kubernetes 调度器深度解析:原理与源码分析

@目录一、调度器架构概述1.1 核心架构设计1.2 调度器工作流程二、调度队列机制2.1 优先级队列实现2.2 Pod 优先级与抢占三、调度框架与插件系统3.1 框架扩展点3.2 插件注册与执行四、调度周期详细分析4.1 调度算法入口…

Elasticsearch MCP 服务器:与你的 Index 聊天 - 指南

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

AI大事记4:从 ELIZA 到 ChatGPT—— 对话式 AI 的世纪征程(上) - 详解

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

堆叠集成

为了让你彻底理解堆叠集成模型(尤其是项目中针对时序数据和小样本场景的定制化设计),我会从“核心概念拆解(结合项目实例)→ 分阶段运作流程(附代码细节)→ 设计逻辑深层原因(对应项目痛点)”三个维度,逐点展…

深入解析:逻辑回归(Logistic Regression)

深入解析:逻辑回归(Logistic Regression)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "…

快速幂算法的基础和扩展

快速幂 快速幂(Fast Exponentiation)算法解决这样一个问题:求解自然数的指数运算。计算 \(a^b\) 时,按照指数定义的朴素的方法是通过连续相乘: \[a^b = \underbrace{a \times a \times \cdots \times a}_{b\text{…

网站模块名称移动端首页

学完本文,您将了解不同相机模型分类、内参意义,及对应的应用代码模型 标定的意义 建模三维世界点投影到二维图像平面的过程。标定输出的是相机模型。 相机模型 相机模型可以解理解为投影模型 +

概率与决策 - 模拟程序让你在选择中取胜

在人生中我们会处处面临抉择,是选择A还是选择B呢。作为程序员,看着这种概率与决策,有时候常在想,我怎么做决策我的胜率概率最大,能不能用程序来模拟一下。我选择A赢的概率,我选择B赢的概率呢?前言 在人生中我们…

题解:qoj6504 Flowers Land 2

人类智慧题。 题意:给出一个由 \(0,1,2\) 组成的字符串,每次给出一个区间,使 \(a_i\leftarrow (a_i+1)\mod 3\) 或者询问区间能否通过删除相邻两项使得整个串被删除。 做法: 首先注意到每次一定删除一个奇数位置的…

Prophet

Prophet模型深度解析:从设计理念到数学原理 Prophet是Meta(原Facebook)为商业场景时间序列预测开发的工具,核心设计目标是解决传统时序模型(如ARIMA、SARIMA)的痛点——对非平稳数据鲁棒性差、需手动处理趋势/季…

详细介绍:Jenkins:持续集成和持续交付(CI/CD)工具

详细介绍:Jenkins:持续集成和持续交付(CI/CD)工具pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&qu…

详细介绍:范式革命:RDMA 如何让网络成为 “分布式内存总线”

详细介绍:范式革命:RDMA 如何让网络成为 “分布式内存总线”2025-10-03 15:09 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !impor…

专业做家具的网站有哪些鹤峰网站制作

ArkTS语言入门 在学习ArkTS语言之前,我们首先需要一个能够编译并运行该语言的工具 DevEco Studio。 了解ArkTS ArkTS是OpenHarmony优选的主力应用开发语言。ArkTS围绕应用开发在TypeScript(简称TS)生态基础上做了进一步扩展,继…