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

eth*_*nny 2 java apache-kafka apache-kafka-streams

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

 config.put(StreamsConfig.NUM_STREAM_THREADS_CONFIG, "3");
Run Code Online (Sandbox Code Playgroud)

CPU使用率不会超过零.应用程序似乎没有做任何事情.没有错误.

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


编辑:

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

Dam*_*Guy 6

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

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

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

  • 准则是每个实例使用一个线程。您可能仍在一台机器上有许多实例(显然,您不希望所有实例都在一台机器上)。 (2认同)