代码之家  ›  专栏  ›  技术社区  ›  daemon54

如何使用spring kafka为侦听器传递多个引导服务器

  •  5
  • daemon54  · 技术社区  · 7 年前

    我有一个监听器,需要从多个具有相同主题的kafka服务器读取内容,这些服务器都配置在一个zookeeper下。如何从这些多个服务器中读取数据。你能帮个忙吗。

    我可以用zookeeper代替Kafka服务器吗?

    2 回复  |  直到 7 年前
        1
  •  7
  •   Artem Bilan    7 年前

    这个 @KafkaListener KafkaListenerContainerFactory @Bean ConsumerFactory . 和 DefaultKafkaConsumerFactory 接受 Map<String, Object> 消费者配置数量:

    @Configuration
    @EnableKafka
    public class KafkaConfig {
    
        @Bean
        KafkaListenerContainerFactory<ConcurrentMessageListenerContainer<Integer, String>>
                            kafkaListenerContainerFactory() {
            ConcurrentKafkaListenerContainerFactory<Integer, String> factory =
                                    new ConcurrentKafkaListenerContainerFactory<>();
            factory.setConsumerFactory(consumerFactory());
            return factory;
        }
    
        @Bean
        public ConsumerFactory<Integer, String> consumerFactory() {
            return new DefaultKafkaConsumerFactory<>(consumerConfigs());
        }
    
        @Bean
        public Map<String, Object> consumerConfigs() {
            Map<String, Object> props = new HashMap<>();
            props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, ...);
            ...
            return props;
        }
    }
    

    https://docs.spring.io/spring-kafka/docs/1.2.2.RELEASE/reference/html/_reference.html#__kafkalistener_annotation

    ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG 是标准的阿帕奇卡夫卡 bootstrap.servers property :

    不,你不能指出动物园管理员的地址。卡夫卡不再支持这一点。

        2
  •  1
  •   Karthikumar    4 年前

    e、 g用于侦听三个服务器:localhost:9092192.168.22.12:9088,localhost:7898