Spring kafka:我们设置的黑白并发与听众之间的关系是什么?

时间:2018-12-04 17:44:34

标签: spring-kafka

我正在像这样使用ConcurrentKafkaListenerContainerFactory:

@Bean
KafkaListenerContainerFactory<ConcurrentMessageListenerContainer<String, String>> kafkaListenerContainerFactory() {
        ConcurrentKafkaListenerContainerFactory<String, String> factory = new ConcurrentKafkaListenerContainerFactory<>();
        factory.setConsumerFactory(consumerFactory());
        factory.setConcurrency(40);
        factory.getContainerProperties().setPollTimeout(3000);
        return factory;
      }

我也有多个针对特定主题的监听器:

@KafkaListener(id = "id1", topicPattern  =  "test1.*")
      public void listenTopic1(ConsumerRecord<String, String> record) {
        System.out.println("Topic: " + record.topic());
      }

@KafkaListener(id = "id2", topicPattern  =  "test2.*")
      public void listenTopic2(ConsumerRecord<String, String> record) {
        System.out.println("Topic: " + record.topic());
      }

我正在设置的并发性,它是特定于一个侦听器还是所有侦听器?注意:所有主题都有40个分区。

某些主题的负载比其余主题更多。

1 个答案:

答案 0 :(得分:0)

每个容器将获得40个使用者线程。工厂为每个侦听器创建一个具有相同属性的容器。

您的主题至少需要40个分区才能生效,因为一个分区只能由一个组中的一个消费者使用。