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

时间:2017-12-18 08:41:43

标签: apache-kafka apache-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

1 个答案:

答案 0 :(得分:1)

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

如果你真的想将“操作分支”拆分成独立的线程,你需要编写两个应用程序而不是一个。

相关问题