@KafkaListener 注解
这段代码使用了 Spring Kafka 提供的注解方式,使得方法可以作为 Kafka 消费者自动监听指定主题的消息。下面详细解释各个部分:
1. @KafkaListener 注解
- 功能:
@KafkaListener注解告诉 Spring,该方法是一个 Kafka 消费者,用于接收并处理来自 Kafka 的消息。当应用启动后,Spring 会自动扫描并注册这些被注解的方法为 Kafka 消费者。
1.1 topics 属性
- 用途:
topics = "voucher-orders"指定了消费者需要监听的 Kafka 主题(Topic)。只要有新的消息发布到该主题上,这个方法就会被触发来处理消息。
1.2 groupId 属性
-
用途:
groupId = "voucher-order-group"指定了消费者所属的消费组(Consumer Group)。 -
消费者组的作用:
- 负载均衡: 如果有多个实例(或多个消费者)都属于同一个消费组,那么 Kafka 会在这些实例之间分配消息,每条消息只会被该组中的一个消费者消费,避免重复处理。
- 容错性: 当某个消费者宕机时,组内其它消费者会自动接管未处理的分区消息,保证消息不会丢失。
- 扩展性: 可以通过增加消费组内的消费者数量来水平扩展消息处理的能力。
2. 运行原理总结
- 当应用启动时,Spring 容器会自动扫描包含
@KafkaListener注解的方法。 - 根据注解的配置,Spring 会为该消费者创建并配置相应的 Kafka 消费者实例。
- 当 Kafka 主题
voucher-orders有新的消息发布时,消费者所在的消费组(voucher-order-group)会自动接收消息。 - 该方法会被触发,并将消息作为参数传入,进行后续处理逻辑。

浙公网安备 33010602011771号