首页 > 解决方案 > 如何在 Spring Boot Kafka 中为同一个消费者工厂 bean 设置不同的消费者组 ID?

问题描述

我想为不同的消费者使用相同的 consumerfactory 和 consumerlistenercontainerfactory。如何在 consumerfactory 中添加或替换超过 1 个 groupid?

有人可以建议吗?

这是我的 consumerfactory 和 consumerlistenercontainerfactory bean。

    @Bean
    public ConsumerFactory<String, Anky> consumerFactory() {

        Map<String, Object> props = kafkaProperties.buildConsumerProperties();

        return new DefaultKafkaConsumerFactory<>(props, new StringDeserializer(),
                new JsonDeserializer<>(Anky.class, false));
    }

    @Bean
    public ConcurrentKafkaListenerContainerFactory<String, Anky> kafkaListenerContainerFactory() {

        ConcurrentKafkaListenerContainerFactory<String, Anky> factory = new ConcurrentKafkaListenerContainerFactory<>();
        factory.setConsumerFactory(consumerFactory());
        factory.getContainerProperties().setAckMode(AckMode.MANUAL_IMMEDIATE);
        factory.setConcurrency(3);
        return factory;
    }

**Group id is defined in the application.properties************
spring.kafka.consumer.group-id=test_consumer_group

我想在这里设置多个消费者 groupid。有办法我可以做到吗?

标签: javaspring-bootapache-kafkakafka-consumer-apispring-kafka

解决方案


您可以将 groupId 设置为@KafkaListener

@KafkaListener(id = "consumer1", topics = {"topic1"}, groupId = "group1")
public void consume1(){

}

@KafkaListener(id = "consumer2", topics = {"topic2"}, groupId = "group2")
public void consume2(){

}

推荐阅读