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