java - Kafka - 在运行时更改拓扑属性

标签 java apache-kafka apache-kafka-streams

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

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

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

最佳答案

这要看情况。更改实例的线程计数是很容易的。您只需要close() KafkaStreams客户端,更改配置,创建新客户端并重新启动它。大多数人会通过完全重新启动相应的 JVM 来完成此操作。

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

关于java - Kafka - 在运行时更改拓扑属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60949100/

相关文章:

java - Ant taskdef - PermGen 空间用完

java - 同一流应用程序中的 Kafka Streams 关闭 Hook 和意外异常处理

junit - 有序启动和等待容器

apache-kafka - Apache 点燃与 Apache 卡夫卡

kotlin - Spring Cloud Kafka限制单位时间消息消耗

apache-kafka - 使用 Kafka Streams 测试窗口聚合

apache-kafka - kafka 本地状态存储/变更日志中的保留时间

java - SpringApplicationConfiguration 无法解析为类型

java - Singleton Factory - 使用 Java 8 实现

java - 我第一次尝试玩 Java 游戏时,在读取图像时以 7 fps 结束?