@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. 运行原理总结

  1. 当应用启动时,Spring 容器会自动扫描包含 @KafkaListener 注解的方法。
  2. 根据注解的配置,Spring 会为该消费者创建并配置相应的 Kafka 消费者实例。
  3. 当 Kafka 主题 voucher-orders 有新的消息发布时,消费者所在的消费组(voucher-order-group)会自动接收消息。
  4. 该方法会被触发,并将消息作为参数传入,进行后续处理逻辑。
posted @ 2025-04-27 22:23  kuki'  阅读(241)  评论(0)    收藏  举报