Java 指定Kafka Connect连接器插件版本

Java 指定Kafka Connect连接器插件版本,java,apache-kafka-connect,Java,Apache Kafka Connect,Kafka如何处理类路径中提供的同一连接器插件的多个版本?例如,假设我将mongo-kafka-1.0.0-all.jar和mongo-kafka-1.1.0-all.jar放在各自的目录中,以便根据需要使用这两个版本。不幸的是,这些文档没有给出一种方法来指定connector.class的版本,我只能假设它的处理方式与通常的Java处理方式类似。如果您拥有共享相同连接器类的相同连接器插件(例如io.confluent.connect.jdbc.JdbcSinkConnector)如果想要同一连

Kafka如何处理
类路径中提供的同一连接器插件的多个版本?例如,假设我将
mongo-kafka-1.0.0-all.jar
mongo-kafka-1.1.0-all.jar
放在各自的目录中,以便根据需要使用这两个版本。不幸的是,这些文档没有给出一种方法来指定
connector.class
的版本,我只能假设它的处理方式与通常的Java处理方式类似。

如果您拥有共享相同连接器类的相同连接器插件(例如
io.confluent.connect.jdbc.JdbcSinkConnector
)如果想要同一连接器JAR的不同版本,则需要运行多个Kafka Connect workers


如果不同的连接器使用不同的依赖JAR,那么这将由Kafka Connect的类路径隔离和
plugin.path
设置来处理。

是的,JAR是通过类加载器加载的。你需要两个罐子有什么具体的原因吗?@OneCricketeer这两个罐子可能是个坏例子,因为它们无论如何都应该是向后兼容的。但是,如果两个开发团队在同一个集群上工作,并且需要相同连接器插件的不同(不兼容)版本来将Kafka集群连接到不同的系统,则会出现这种要求。我的建议是使用配置管理工具来防止这种情况发生。无论如何,集群都需要重新启动以获取新的jar,因此这两个团队将在任何升级过程中停止彼此的进程。因此,您可以形成一个集中的基础架构流程,负责部署新的/无冲突的连接器,或者为每个团队提供连接群集,但如果两个JAR在初始部署时都可用,这将无济于事。我考虑将单独的集群作为最后手段,显然这是这个特定用例的唯一解决方案。谢谢谢谢,这正是我想要的明确答案!