Spring Cloud Stream Kafka Binder 中的消费者和生产者并发配置?

问题描述 投票:0回答:1

spring.cloud.stream.binding.myInputProcess.consumer.concurrency:3

我的应用程序中有这样的配置,它从 kafka 获取输入并处理它,然后放回另一个 kafka。 那么,我是否也需要提及生产者的并发性

或者上面的线代表什么?

我在想,消费者并发会增加消费的线程数量,但是生产它呢?

apache-kafka spring-kafka spring-cloud-stream spring-cloud-stream-binder-kafka
1个回答
0
投票

虽然consumer.concurrency是Spring Cloud Stream中的核心绑定属性,但当涉及到Kafka绑定器时,它具有重载的含义。使用 Kafka 绑定器时,为并发设置 > 1 的值会创建那么多消费者。让我们用你的例子 -

spring.cloud.stream.binding.myInputProcess.consumer.concurrency: 3
。在这种情况下,绑定器将
3
设置为消息侦听器容器上的并发性,这指示它创建 3 个 Kafka 消费者。这还有另一个后果,如果底层主题没有分区,就会有空闲的消费者。如果您的主题至少有 3 个分区,那么每个消费者将从单个分区进行消费。如果主题有超过 3 个分区,则分区将分布在消费者之间。如果主题的分区少于 3 个,那么我们会遇到至少有一个空闲消费者的情况。对于生产者来说,记录将根据指定的分区策略写入,因此您不需要在那里设置特殊的并发设置。 Kafka生产者将根据分区算法写入它选择的任何分区;并发设置在那里没有意义。

© www.soinside.com 2019 - 2024. All rights reserved.