程序运行时是否可以动态调整kafka流的num.stream.threads配置?

时间:2019-01-04 08:48:59

标签: apache-kafka apache-kafka-streams

我正在服务中运行多个Kafka流实例。我想动态调整num.stream.threads配置,以在程序运行时控制每个实例的优先级。

我没有在KafkaStream类上找到相关方法。

我想知道是否还有其他方法?

2 个答案:

答案 0 :(得分:2)

创建KafkaStreams时,无法在运行时对其进行更新(它不仅与属性num.stream.threads有关,而且还与其他属性有关)。

作为一种解决方法,您可以通过停止现有的KafkaStreams并创建并启动一个新的num.stream.threads来重新创建特定的{{1}},而无需停止其他流并且无需重新启动应用程序。它是否适合您的需求取决于您的特定用例。

这可以通过几种选择来实现。其中之一-根据特定的kafka流,更新数据库中的配置(例如{{1}}),并从应用程序的每个实例中(例如,每10分钟通过cron表达式)从数据库中获取数据,如果发现更新,则停止现有并启动需要更新的配置的新KafkaStream。如果您只有一个应用程序实例,则可以通过REST轻松实现。

答案 1 :(得分:1)

目前不可能。

如果要更改线程数,则需要使用KafkaStreams#close()停止程序,使用更新的配置创建新的KafkaStreams实例,并使用KafkaStreams#start()启动新实例。