为 Kafka 流中的不同操作设置不同的线程

Setting Different Threads for Different Operations within Kafka Streams

我在 kafka 流中定义了以下拓扑

Operation 1 : input_stream ----> filter ----> window_processing ----> write_to_topic
Operation 2 : input_stream ----> write_to_topic

我观察到这两个操作都是由同一个线程执行的(即使我增加了 StreamsConfig.NUM_STREAM_THREADS_CONFIG 线程因子)。但现在我希望它们由不同的线程处理,因为 Operation 1 正在减慢 Operation 2。有什么办法可以为不同的操作设置不同的线程。如上例 Operation 1 正在阻塞并减慢 Operation 2

Kafka Streams 通过分区和 sub-topologies/tasks 并行化。在您的情况下,只有一个子拓扑,因此您只能通过分区进行并行化。因此,您可以 运行 与并行输入主题分区一样多的线程,并且每个线程处理一个分区(或者多个分区,因为线程少于分区)。

如果你真的想把两个"operation branches"拆分成独立的线程,你需要写两个应用程序而不是一个。