SpringBoot整合Kafaka批量消费配置

1,682 阅读1分钟

要在Spring Boot中批量消费Kafka消息,一般需要步骤进行配置:

  1. 添加依赖项: 在您的pom.xml文件中添加Kafka的Spring Boot依赖项:
<dependency>
    <groupId>org.springframework.kafka</groupId>
    <artifactId>spring-kafka</artifactId>
</dependency>
  1. 定义Kafka消费者配置: 创建一个Java类作为Kafka消费者的配置类,并使用@Configuration注解标记它。配置ConsumerFactoryKafkaListenerContainerFactory
@Configuration
public class KafkaConsumerConfig {

    @Value("${spring.kafka.bootstrap-servers}")
    private String bootstrapServers;

    @Value("${spring.kafka.consumer.group-id}")
    private String groupId;

    @Bean
    public ConsumerFactory<String, String> consumerFactory() {
        Map<String, Object> props = new HashMap<>();
        props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
        props.put(ConsumerConfig.GROUP_ID_CONFIG, groupId);
        props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
        props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);

        return new DefaultKafkaConsumerFactory<>(props);
    }

    @Bean
    public KafkaListenerContainerFactory<ConcurrentMessageListenerContainer<String, String>> kafkaListenerContainerFactory() {
        ConcurrentKafkaListenerContainerFactory<String, String> factory = new ConcurrentKafkaListenerContainerFactory<>();
        factory.setConsumerFactory(consumerFactory());
        factory.setBatchListener(true); // 开启批量消费

        return factory;
    }
}

在上面的代码中,我们使用了@Value注解将Kafka的配置属性值注入到变量中,您可以在application.properties文件中配置这些属性值。

  1. 创建Kafka消息监听器: 创建一个Java类作为Kafka消息监听器,并使用@KafkaListener注解标记它。在@KafkaListener注解中指定要监听的Kafka主题,并使用List类型作为参数接收批量消费的消息。
@Component
public class KafkaConsumerListener {

    @KafkaListener(topics = "${spring.kafka.consumer.topic}", containerFactory = "kafkaListenerContainerFactory")
    public void listen(List<String> messages) {
        // 处理接收到的消息
        for (String message : messages) {
            System.out.println("Received message: " + message);
        }
    }
}

在上面的代码中,我们使用了@KafkaListener注解指定要监听的Kafka主题,并将kafkaListenerContainerFactory作为containerFactory参数传递。

  1. 配置Kafka相关属性: 在application.properties文件中配置Kafka的相关属性,例如Kafka服务器地址、消费者分组ID和要监听的主题:
spring.kafka.bootstrap-servers=localhost:9092
spring.kafka.consumer.group-id=my-group-id
spring.kafka.consumer.topic=my-topic
  1. 运行应用程序:在Spring Boot应用程序中,通过@Autowired注解将KafkaConsumerListener注入到适当的位置,并启动应用程序。当Kafka中的消息到达时,listen方法将被调用并接收批处理消息。