使用Kafka流DSL https://kafka.apache.org/0110/documentation/streams/developer-guide创建Kafka流时
我们遇到了一个场景,我们需要用新的拓扑定义更新Kafka流。
例如:当我们开始的时候,我们定义了一个拓扑来读取一个主题(来源)和一个目标主题(Sink)。但是,在进行配置更改时,我们现在需要从两个不同的主题(如果需要的话是两个源)进行读取,并将其写入单个目标主题。
从我们现在构建的内容来看,拓扑定义是硬编码的,类似于在处理器拓扑中定义的。
问题:
我们使用JDK 1.8和Kafka DSL 2.2.0
谢谢你,阿尤斯曼
发布于 2019-06-18 15:12:13
是否可以以声明式的方式(例如Json或其他什么)定义拓扑,而不需要对拓扑进行编码?
KStreams DSL是声明性的,但我假设您的意思不是DSL?
如果是,答案是否定的。不过,您可能想看看KSQL。
是否有可能重新加载一个现有的Kafka流使用一个新的定义卡夫卡流拓扑?
您的意思是,如果现有的Kafka流应用程序可以重新加载处理拓扑的新定义?如果是,答案是否定的。在这种情况下,您将部署应用程序的新版本。
根据旧的/新的拓扑是如何定义的,应用程序的简单滚动升级可能就足够了(粗略地说:如果拓扑变化最小),但是您可能需要单独部署新应用程序,然后在对新应用程序进行审查之后,将旧应用程序分解。
注意: KStreams是一个KStreams库,根据设计,它不包括操作/管理使用KStreams库的Java应用程序的功能。
对于上面提到的#2,Kafka Streams DSL是否提供了一种通过外部触发器或系统调用“重新加载”新拓扑定义的方法?
不是的。
https://stackoverflow.com/questions/56642862
复制相似问题