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

Apache Kafka实战:Spring Boot消息队列完整指南

前言

Apache Kafka 是分布式消息队列的事实标准,本文带你实战 Spring Boot 整合 Kafka,完成生产者和消费者的完整开发。

一、Kafka 核心概念

  • Producer:消息生产者
  • Consumer:消息消费者
  • Broker:Kafka 服务节点
  • Topic:消息主题分类
  • Partition:Topic 的分区,实现并行处理
  • Consumer Group:消费者组,实现负载均衡

二、Docker 安装 Kafka

# docker-compose.yml
services:zookeeper:image: confluentinc/cp-zookeeper:7.5.0environment:ZOOKEEPER_CLIENT_PORT: 2181kafka:image: confluentinc/cp-kafka:7.5.0depends_on: [zookeeper]ports: ["9092:9092"]environment:KAFKA_BROKER_ID: 1KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092KAFKA_AUTO_CREATE_TOPICS_ENABLE: "true"

三、Spring Boot 整合 Kafka

<!-- pom.xml -->
<dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId>
</dependency># application.yml
spring:kafka:bootstrap-servers: localhost:9092producer:key-serializer: org.apache.kafka.common.serialization.StringSerializervalue-serializer: org.apache.kafka.common.serialization.StringSerializerconsumer:group-id: my-groupauto-offset-reset: earliestkey-deserializer: org.apache.kafka.common.serialization.StringDeserializervalue-deserializer: org.apache.kafka.common.serialization.StringDeserializer

四、生产者

@Service
public class OrderProducer {@Autowiredprivate KafkaTemplate<String, String> kafkaTemplate;public void sendOrder(String orderId) {String message = "{\"orderId\":\""+orderId+"\",\"time\":\""+LocalDateTime.now()+"\"}";kafkaTemplate.send("order-topic", orderId, message);System.out.println("Sent: " + message);}
}

五、消费者

@Component
public class OrderConsumer {@KafkaListener(topics = "order-topic", groupId = "my-group")public void consume(ConsumerRecord<String, String> record) {System.out.println("Received: key=" + record.key());System.out.println("Value: " + record.value());System.out.println("Partition: " + record.partition());System.out.println("Offset: " + record.offset());}
}

六、手动提交 Offset

@KafkaListener(topics = "order-topic", groupId = "my-group")
public void consumeWithManualAck(ConsumerRecord<String, String> record,        Acknowledgment ack) {try {processOrder(record.value());ack.acknowledge();  // 手动确认} catch (Exception e) {// 处理失败,消息会被重新消费log.error("Failed to process: {}", record.key(), e);}
}# 开启手动提交
spring.kafka.listener.ack-mode: manual

七、常用命令速查

# 创建 Topic
kafka-topics.sh --create --topic order-topic \--bootstrap-server localhost:9092 --partitions 3 --replication-factor 1# 查看 Topic 列表
kafka-topics.sh --list --bootstrap-server localhost:9092# 查看消费者组
kafka-consumer-groups.sh --list --bootstrap-server localhost:9092# 控制台消费者
kafka-console-consumer.sh --topic order-topic \--bootstrap-server localhost:9092 --from-beginning

总结

Kafka 是微服务架构中异步通信的核心组件。核心要点:Producer/Consumer 模式实现解耦、Partition 实现并行处理、Consumer Group 实现负载均衡、手动提交 Offset 保证消息可靠性。

觉得有帮助请点赞收藏!有问题欢迎评论区交流 🚀

http://www.jsqmd.com/news/594051/

相关文章:

  • 【智慧教育合集】400余份AI大模型赋能教育、数字校园、智慧高校、智慧教育、智慧职教、智慧幼教(PPT+WORD+PDF)
  • 龙迅LT9211D芯片解析:如何实现MIPI与双端口LVDS的高效转换
  • 【LeetCode 刷题日】19.删除链表的倒数第n个节点
  • Java中什么是嵌套对象?
  • 高功率高密度驱动技术:未来电力电子核心
  • 从实战到复盘:K8s服务器电子数据取证竞赛全解析与核心技巧
  • Vercel agent-browser:为 AI 而生的浏览器自动化工具
  • 小米笔记本Pro双固态硬盘实战:Win11与Ubuntu22.04双系统完美共存指南
  • 【业财一体化财务合集】300份业财一体化、财业一体化、数字财务、智慧财务、财务共享服务、财务管控方案资料合集(PPT+WORD+PDF)
  • 谷歌商店play下载
  • 针对波动计算复杂性的吸收边界条件(PML 用于一般波动方程)附Matlab代码
  • MATLAB六自由度齿轮弯扭耦合动力学代码(含时变啮合刚度、齿侧间隙及集中质量法建模的数值计算分析)
  • 自适应多机器人编队规划,以包围和跟踪具有运动和可见性约束的目标附Matlab代码
  • 用AI提升答辩质量:10款必备工具(含爱毕业)与专业模板测评
  • CEEMDAN-VMD-Transformer-GRU二次分解+编码器+门控循环单元多元时间序列预测
  • 2026届必备的十大降重复率工具实际效果
  • LeetCode 双杀!二叉树最大路径和 + 岛屿数量|DFS 两大经典模板题
  • W5500 TCP客户端实战 | 02 - 从寄存器配置到数据收发的完整流程解析
  • 基于FPGA的LMS自适应滤波器设计与实现(Verilog代码及仿真)
  • 2025届学术党必备的六大降重复率神器横评
  • TCP 和 UDP 有什么区别:从可靠性到速度,从头部到场景
  • BFS 经典双题:腐烂的橘子 + 课程表 | 拓扑排序入门必刷
  • 别再只调参了!深入torchvision.datasets.CIFAR10源码,理解PyTorch数据加载的设计哲学
  • 2025届学术党必备的六大AI论文助手解析与推荐
  • Ubuntu 22.04下Milvus集群部署实战:从Docker提取二进制文件的完整指南
  • 基于Simulink的四自由度磁悬浮轴承控制仿真:电流环、位置环、位移解析及磁轴承模型PID控...
  • DSI3协议四大模式(CRM/PDCM/BDM/DM)全解析:从汽车胎压监测到电池管理,看它如何工作
  • 1Panel面板深度体验:比宝塔更轻量的Docker管理方案?CasaOS环境实测对比
  • 为什么要 TCP,IP 层实现控制不行么:从分层哲学到不可逾越的物理限制
  • 2026-4-5