我正在像这样使用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个分区。
某些主题的负载比其余主题更多。
答案 0 :(得分:0)
每个容器将获得40个使用者线程。工厂为每个侦听器创建一个具有相同属性的容器。
您的主题至少需要40个分区才能生效,因为一个分区只能由一个组中的一个消费者使用。