springboot简单使用kafka消费者监听,以及kafka配置账号密码
介绍 Spring Boot 中使用 Kafka 消费者监听消息的基本配置,并说明 SASL 账号密码认证的常见写法和注意事项。
在 Spring Boot 项目中使用 Kafka 消费者,通常会引入 Spring for Apache Kafka 依赖,通过配置连接信息、消费者组、反序列化方式和监听方法来接收消息。如果 Kafka 集群开启了认证,还需要配置安全协议和账号密码。
引入依赖
Maven 项目通常会使用 spring-kafka。具体版本应与 Spring Boot 版本兼容,建议通过 Spring Boot 的依赖管理统一控制。
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>基础消费者配置
常见配置包括 broker 地址、消费者组、key 与 value 的反序列化器,以及 offset 策略。下面是一个简化示例:
spring:
kafka:
bootstrap-servers: localhost:9092
consumer:
group-id: demo-consumer-group
auto-offset-reset: earliest
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
value-deserializer: org.apache.kafka.common.serialization.StringDeserializer随后可以通过 @KafkaListener 监听主题:
@KafkaListener(topics = "demo-topic", groupId = "demo-consumer-group")
public void listen(String message) {
System.out.println(message);
}真实项目中不建议直接 println,应接入日志、异常处理和业务幂等逻辑。
配置账号密码认证
如果 Kafka 使用 SASL/PLAIN 认证,Spring Boot 配置中需要增加安全相关属性。不同集群可能使用 SASL_PLAINTEXT 或 SASL_SSL,应以集群实际配置为准。
spring:
kafka:
properties:
security.protocol: SASL_PLAINTEXT
sasl.mechanism: PLAIN
sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username="user" password="password";生产环境不要把明文密码提交到代码仓库,应使用环境变量、配置中心或密钥管理系统注入。
消费者开发注意事项
首先要处理异常。如果监听方法抛出异常,可能导致消息重复消费或消费停滞,需要结合重试、死信主题和告警策略设计。其次要关注幂等性,尤其是写数据库、调用外部接口等场景。再次要合理设置并发、批量消费和手动提交 offset,避免业务处理成功但 offset 状态不一致。
Spring Boot 简化了 Kafka 消费者开发,但连接、认证、序列化、消费语义和异常处理仍需要按生产要求仔细设计。


