我当前正在运行一组拓扑,我想在运行时更改拓扑属性,例如
- 更改线程数
- 将源主题添加到现有主题列表
- 添加接收器
是否可以在运行时更改属性而不停止 kafka 流。我的一个想法是停止 kafka 流,然后加载这些配置并重新开始。但这似乎不是一个理想的解决方案。谁能提出更好的方法吗?
最佳答案
这要看情况。更改实例的线程计数是很容易的。您只需要close()
KafkaStreams
客户端,更改配置,创建新客户端并重新启动它。大多数人会通过完全重新启动相应的 JVM 来完成此操作。
添加源主题和接收器主题并不容易。特别是对于源主题,您需要停止所有实例,然后一一重新启动它们,包括新的源主题。原因是,所使用的分区分配器假设所有实例都订阅完全相同的主题。如果违反了这一假设,即如果某些实例订阅了新主题,则新主题的这些分区可能会被分配给尚未更新的“旧”实例,这将导致“旧”实例崩溃实例不知道如何处理它未订阅的分配分区。
关于java - Kafka - 在运行时更改拓扑属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60949100/