Kafka Connect 设计为可扩展的,因此开发人员可以创建自定义 Connector、Transform 或者 Converter。Kafka Connect Plugin 是一组 Jar 文件,其中包含一个或多个 Connector、Transform 或者 Converter 的实现。Connect 将每个 Plugin 相互隔离,以便一个 Plugin 中的库不受任何其他 Plugin 中的库的影响。这在使用来自多个提供商的 Connector 时非常重要。
在 Connect 部署中安装许多 Plugin 很常见,但确保每个 Plugin 只安装一个版本。
Kafka Connect Plugin 可以是:
Plugin 不应包含 Kafka Connect 运行时提供的任何库。
Kafka Connect 根据 Plugin 路径(worker 配置文件 plugin.path 属性中以逗号分隔的目录路径)来寻找 Plugin。下面显示了一个 worker 配置文件 plugin.path 属性:
plugin.path=/opt/share/kafka/plugins
要安装 Plugin,首先要将 plugin 所在目录或 uber JAR 放在 plugin.path 属性的目录列表中。当我们启动 Connect worker 时,每个 worker 都会在 plugin.path 对应目录中找到的所有 Connector、Transform 或者 Converter。当我们使用 Connector、Transform 或者 Converter 时,Connect worker 首先会从对应的 Plugin 加载类,然后是 Kafka Connect 运行时和 Java 库。
Confluent Hub 打造了一个由 Connector、Transform 以及 Converter 组成的大型生态系统,我们可以从中找到适合我们需求的组件。
我们将以 Kafka Connect JDBC 插件为例,从 Confluent hub 下载会得到 confluentinc-kafka-connect-jdbc-xxx.zip 文件。
将 zip 文件解压到 Kafka Connect 指定的文件夹下(plugin.path 设定的目录)。在这我们将把它放在 /opt/share/kafka/plugins 目录下。文件夹树看起来像这样:
/opt/share/kafka/plugins
└── confluentinc-kafka-connect-jdbc-10.2.2
├── doc
│ ├── LICENSE
│ └── README.md
├── etc
…
├── lib
…
│ ├── kafka-connect-jdbc-10.2.2.jar
│ ├── sqlite-jdbc-3.25.2.jar
│ ├── postgresql-42.2.19.jar
│ ├── xmlparserv2-19.7.0.0.jar
…
└── manifest.json
在 Kafka Connect 配置文件 connect-standalone.properties(或 connect-distributed.properties)中,搜索 plugin.path 配置,并修改或创建它以包含 Connector 所在的文件夹:
plugin.path=/opt/share/kafka/plugins
参考: