1

在我们的应用程序中,我们有多个主题,其中一些主题将使用 16 个分区创建,而一些主题将使用 1 个分区创建。是否有任何spring.cloud.stream.kafka.bindings可用的属性/选项来实现这一目标?

4

2 回答 2

0

也许这有帮助:num.stream.threads 创建空闲线程

如果只有一个KafkaStreams实例,这是不可能的,因为 Kafka Streams 只有一个全局配置。因此,您需要拥有多个应用程序,即KafkaStreams处理不同输入主题的多个实例,以便为每个实例配置不同数量的线程。按照上面的答案,spring-cloud-streams 似乎可以创建多个KafkaStreams客户端来支持你想要的。

但是,我不确定您为什么想要/需要这个(但我也不确定 spring-cloud-stream 如何翻译您的程序)?最后,并行化是基于任务完成的,因此对于单个输入主题分区,只有一个线程将获得分配的相应任务。因此,您无需担心任何开销。

有关更多详细信息,请查看:https ://docs.confluent.io/current/streams/architecture.html#parallelism-model

于 2020-03-10T03:46:10.113 回答
-1

有几个可用的分区属性。例如,

spring.cloud.stream.bindings.func-out-0.producer.partitionKeyExpression=payload.id
spring.cloud.stream.bindings.func-out-0.producer.partition

您可以在此处获取有关生产者和消费者配置属性的更多信息

于 2020-02-27T11:58:17.527 回答