当前位置: 首页 > 知识库问答 >
问题:

基于debezium内容的路由配置

栾和玉
2023-03-14

我使用的是confluent,所以我已经根据confluent文档使用Connect.Properties中的confluent-hub安装了dibezium连接器

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

我需要使用io.debezium.transforms.contentbasedrouter https://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/confluent-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

有什么建议如何解决这个问题?

共有1个答案

章安宜
2023-03-14

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

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

 类似资料:
  • 我正在尝试在最新版本的 Spring Cloud 流中使用基于内容的路由。根据这份文件 - 这是我用StreamListener编写的代码 通过使用该条件,可以将消息路由到两个不同的函数。 我正试图用如下的功能接口方法来消费消息。 如何在函数中实现类似的基于内容的路由?蒂亚。 其他细节- Spring引导版本 - 2.3.12.发布 Spring云版 - Hoxton.SR11

  • 我们正在使用Spring Cloud Stream v2。2带有Kafka和Avro(本机编码器/解码器)。我们正在尝试根据负载的条件使用基于内容的路由。据我所知,根据Spring Cloud Stream文档,基于内容的路由只能在标头上实现,因为负载到达条件时没有经过类型转换过程。因此,除非条件基于字节格式,否则它将无法按预期工作。但是,我知道,当在本机模式下使用Avro时,会跳过消息头,并且不

  • 我需要创建一个反向代理,接收传入的请求,并基于请求正文的内容,将请求路由到特定的URI。 这是一个路由微服务,它类似于反向代理,根据来自每个请求主体的一些信息进行路由。这意味着对于每个请求,我需要解析请求正文并获得“username”字段,然后建立JDBC连接以从数据库中获取附加信息。根据数据库中的信息,它最终将请求重定向到正确的URI。 从我现在所拥有的,我有2个阻止方法。第一个是请求主体的解析

  • 我有一个小难题来解决这个问题。 我有一个用户和一个管理员角色。 用户应该能够列出除管理员以外的所有用户。管理员可以列出所有用户。 我想到的第一个解决方案是检查控制器级别的角色: 但是我更想做的是在路线层面上,保持控制器更干净,但不知何故它确实起作用了。它只列出用户,即使我作为管理员登录。 有什么建议吗?谢谢!

  • 我的目标是开发一个单一的骆驼路线来映射这些服务器,接受路径中服务器的名称。类似于这样: 我的(简化且不起作用)Blueprint.xml: 问题是,我不知道如何从路径中移除/center、/north或/south,因此头部被传递给目标服务,而目标服务不知道如何处理它。调用: