Kafka KStreams - 如何添加线程/使用StreamsConfig.NUM_STREAM_THREADS_CONFIG

时间:2016-09-06 22:47:51

标签: java apache-kafka apache-kafka-streams

我正在弄乱这个参数并遇到了一些奇怪的问题。没有它我的应用运行正常但是当我将这一行添加到配置时:

 config.put(StreamsConfig.NUM_STREAM_THREADS_CONFIG, "3");

CPU使用率不会超过零。应用似乎没有做任何。没有错误。

是否有一些建议的方法来增加KStreams应用程序的线程使用率?或者只是相信力量'让它们一起运行?

编辑:

  1. 我有两个分区
  2. 通过kafka-consumer-groups检查了消费者延迟 - 有大量可用记录
  3. 即使只有一个分区 - 为什么多个线程什么都不做? 0%CPU。

1 个答案:

答案 0 :(得分:6)

你有多少个分区?如果您只有一个分区,那么增加线程数将不会产生任何影响,因为分区数定义了最大并行度。因此,如果您有1个分区和3个线程,那么您将只有1个忙线程。

检查输入主题上是否有可供使用的数据。确保将StreamsConfig.AUTO_OFFSET_RESET_CONFIG设置为latest。 如果您之前使用相同的applicationId运行它,那么Kafka Streams可能已经消耗了所有数据,因此无需执行任何操作。在这种情况下,您可以使用其他applicationId,也可以使用Kafka Streams Reset Tool重置主题。

此设置用于某些测试,即KStreamRepartitionJoinTest,似乎工作正常。