基于debezium内容的路由配置



我使用的是confluent,所以我已经根据confluent文档使用connect.properties中的confluent hub安装了dibezium连接器。我确实有条目

plugin.path=/usr/share/java,/opt/confluent-6.0.0/share/confluent-hub-components

我需要使用io.debezium.transforms.ContentBasedRouterhttps://debezium.io/documentation/reference/1.3/configuration/content-based-routing.html

所以根据debezium文档,我已经下载了debezium-scripting-1.3.1.Final.jar并将其放入/opt/confluent-6.0.0/share/confluent-hub-components/并将其复制到/opt/confluent-6.0.0/share/confluet-hub-components/debezium-debezium-connector-sqlserver/lib目录这是我的mysql_src.json连接器中的条目

"transforms": "unwrap,route",
"transforms.unwrap.type": "io.debezium.transforms.ExtractNewRecordState",
"transforms.unwrap.add.fields": "source.snapshot",
"transforms.route.type": "io.debezium.transforms.ContentBasedRouter",
"transforms.route.language": "jsr223.groovy",
"transforms.route.topic.expression": "value.__source_snapshot == 'false' ? 'test'"

当我试图配置/加载这个连接器时,我得到以下错误消息

[2020-12-15 22:18:45,351] ERROR [Worker clientId=connect-1, groupId=connect-cluster] Failed to reconfigure connector's tasks, retrying after backoff: (org.apache.kafka.connect.runtime.distributed.DistributedHerder:1369)
java.lang.NoClassDefFoundError: io/debezium/DebeziumException

有什么建议可以解决这个问题吗?

根据文档,您需要额外获得JSR-223脚本引擎实现,并将其内容添加到Kafka Connect环境的Debezium插件目录中,因为:

Debezium没有附带任何JSR 223 API实现。要在Debezium中使用表达式语言,必须下载该语言的JSR223脚本引擎实现,并将该语言实现所使用的任何其他JAR文件添加到Debezium连接器插件目录中。

我不确定配置是否正确,但我通过了第一个配置问题(我希望(我现在面临另一个问题,我将在不同的问题中描述。我不确定出了什么问题,我遵循

  1. 清理动物园管理员目录
  2. 清理kafka目录
  3. 使用命令行启动/停止脚本在分布式模式下运行kafka(不使用confluent cli(这解决了java.lang.NoClassDefFoundError: io/debezium/DebeziumException错误

相关内容

  • 没有找到相关文章

最新更新