1. 项目概述
最近在重构公司消息中间件时,我再次深入研究了SpringBoot与Kafka的集成方案。作为目前最流行的分布式消息系统之一,Kafka在订单处理、日志收集、实时监控等场景中展现出强大的吞吐能力。而SpringBoot的自动化配置特性,让集成过程变得异常简单。不过在实际落地时,从客户端配置到消息可靠性保障,每个环节都有不少技术细节需要注意。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与基础配置
2.1 依赖引入
首先在pom.xml中添加关键依赖:
xml复制<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
<version>2.8.0</version>
</dependency>
这里特别要注意版本兼容性问题。SpringBoot 2.5.x版本对应的是spring-kafka 2.7.x,如果混用可能导致自动配置失效。我建议通过SpringBoot的dependency-management自动管理版本号。
2.2 基础配置
application.yml中的最小化配置:
yaml复制spring:
kafka:
bootstrap-servers: localhost:9092
consumer:
group-id: my-group
auto-offset-reset: earliest
producer:
key-serializer: org.apache.kafka.common.serialization.StringSerializer
value-serializer: org.apache.kafka.common.serialization.StringSerializer
生产环境建议至少配置3个broker节点,我在阿里云环境中的典型配置:
yaml复制bootstrap-servers:
- kafka1.example.com:9092
- kafka2.example.com:9092
- kafka3.example.com:9092
3. 生产者实现细节
3.1 同步发送模式
基础发送示例:
java复制@Autowired
private KafkaTemplate<String, String> kafkaTemplate;
public void sendMessage(String topic, String message) {
ListenableFuture<SendResult<String, String>> future =
kafkaTemplate.send(topic, message);
