有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在运行时更改拓扑属性

我目前正在运行一组拓扑,我想在运行时更改拓扑属性,如

  1. 更改线程数
  2. 将源主题添加到现有主题列表
  3. 加水槽

是否可以在运行时更改属性而不停止kafka流。我的一个想法是停止卡夫卡流,然后加载这些配置并重新开始。但这似乎不是一个理想的解决方案。有人能提出更好的方法吗


共 (1) 个答案

  1. # 1 楼答案

    视情况而定。更改实例的线程数很容易。您只需要close()这个KafkaStreams客户端,更改配置,创建一个新的客户端,然后重新启动它。大多数人会通过完全重新启动相应的JVM来实现这一点

    添加源主题和接收主题并不容易。特别是对于源主题,您需要停止所有实例,然后逐个重新启动它们,包括新的源主题。原因是,使用的分区赋值器假定所有实例都订阅了完全相同的主题。如果违反此假设,即,如果某些实例订阅了新主题,则新主题的这些分区可能会分配给尚未更新的“旧”实例,这将导致崩溃,因为“旧”实例不知道如何处理未订阅的已分配分区