【发布时间】:2019-11-14 08:01:48
【问题描述】:
我正在创建一个支持 Kafka 的 Spring Boot 应用程序。 我创建了一个生产者和一个消费者,一切都像魅力一样运作。在运行时我有一个消费者。我希望有很多消费者,我的主题的分区数量相同。
如何创建多个消费者?
我一直在搜索文档,但没有成功。
谢谢!
【问题讨论】:
标签: spring-boot apache-kafka kafka-consumer-api spring-kafka
我正在创建一个支持 Kafka 的 Spring Boot 应用程序。 我创建了一个生产者和一个消费者,一切都像魅力一样运作。在运行时我有一个消费者。我希望有很多消费者,我的主题的分区数量相同。
如何创建多个消费者?
我一直在搜索文档,但没有成功。
谢谢!
【问题讨论】:
标签: spring-boot apache-kafka kafka-consumer-api spring-kafka
您需要创建一个ConcurrentKafkaListenerContainerFactory 并设置并发参数。它基于并发创建 1 个或多个 KafkaMessageListenerContainers。如果 ContainerProperties 配置了 TopicPartitions,TopicPartitions 将均匀分布在各个实例中。
例如
ConcurrentKafkaListenerContainerFactory<String, String> factory = new ConcurrentKafkaListenerContainerFactory<>();
factory.setConcurrency(12);
【讨论】:
@KafkaListener,它有一个concurrency 属性(从2.2 开始),它会覆盖容器工厂的默认设置。