【发布时间】:2021-02-24 16:23:46
【问题描述】:
Kafka 如何处理CLASSPATH 中提供的同一连接器插件的多个版本?例如,假设我将mongo-kafka-1.0.0-all.jar 和mongo-kafka-1.1.0-all.jar 都放入各自的目录中,以便根据需要使用这两个版本。不幸的是,文档并没有给出指定connector.class 版本的方法,我只能假设这种处理方式就像classloading 通常以Java 方式处理一样。
【问题讨论】:
-
是的,jar 是通过 Classloader 加载的。您需要两个罐子是否有特定原因?
-
@OneCricketeer 这两个罐子可能是个坏例子,因为它们无论如何都应该向后兼容。但是,如果两个开发团队在同一个集群上工作,并且需要同一连接器插件的不同(不兼容)版本来将 Kafka 集群连接到不同的系统,就会出现这种要求。
-
我的建议是使用配置管理工具来防止这种情况发生。无论如何,集群都需要重新启动以获取新的 jar,因此这两个团队将因此在任何升级期间停止彼此的进程。因此,您可以形成一个集中的基础架构流程来负责部署新的/非冲突连接器,或者为每个团队提供 Connect 集群
-
但是如果两个 jars 都/应该在初始部署中可用,这没有帮助。我正在考虑将单独的集群作为最后的手段,显然这是这个特定用例的唯一解决方案。谢谢!