调整canal支持高版本,解决打包异常

因为搜索项目要使用canal增量更新elasticsearch的索引,而下载client-adapter(客户端适配者)的默认只支持到elasticsearch的6.4版本,但项目中使用elasticsearch的版本是7.3,为了统一版本,对client-adapter进行改造

一、选择canal-master项目打开client-adapter模块,等待maven更新好依赖,对elasticsearch中pom文件的三处旧版本进行调整

在这里插入图片描述

二、在canal-master的根目录下重新打包:mvn clean package -DskipTests

如果编译报错 No compiler is provided in this environment,请在maven目录bin目录下打开mvn.cmd文件在文件第一行输入set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_191(此处为JDK所在路径)

[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
三、解决canal-adapter版本升级过程的异常

编译提示:ESAdapter.java:[225,56] 不兼容的类型,无法转换为long
在这里插入图片描述

[ERROR] /canal-master/client-adapter/elasticsearch/src/main/java/com/alibaba/otter/canal/client/adapter/es/ESAdapter.java:[225,56] 不兼容的类型: or
g.apache.lucene.search.TotalHits无法转换为long

在这里插入图片描述
解决方法:在getTotalHits后增加value,因为ES7后扩大了TotalHits的范围
在这里插入图片描述
调整后继续编译打包 mvn package -DskipTests,可直接在刚才出错的地方继续编译,等待编译完成,然后直接使用编译好的client-adapter
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果您使用的是 Canal 1.x 版本,可以按照以下步骤配置 Canal 支持事务: 1. 在 Canal Server 的配置文件 `conf/canal.properties` 中,配置 `canal.instance.enableDdlSync=true`,表示开启 DDL 同步功能。 2. 在 Canal Client 的配置文件 `conf/example/instance.properties` 中,配置 `canal.instance.filter.regex=.*`,表示同步所有的表。 3. 在 Canal Client 的配置文件 `conf/example/instance.properties` 中,配置 `canal.instance.transactionSize=1000`,表示每次事务同步的最大条数为 1000。 4. 在 Canal Client 的启动代码中,使用 `CanalConnector` 的 `connect()` 方法建立连接,并使用 `subscribe()` 方法订阅需要同步的数据库和表。 5. 在 Canal Client 的启动代码中,使用 `start()` 方法启动监听,然后使用 `while` 循环不断读取数据,直到程序停止。 如果您使用的是 Canal 2.x 版本,可以按照以下步骤配置 Canal 支持事务: 1. 在 Canal Server 的配置文件 `conf/canal.properties` 中,配置 `canal.instance.enableDdlSync=true`,表示开启 DDL 同步功能。 2. 在 Canal Client 的配置文件 `conf/canal.yaml` 中,配置 `destination: example`,表示指定同步的目标为 `example`。 3. 在 Canal Client 的配置文件 `conf/canal.yaml` 中,配置 `filter: .*`,表示同步所有的表。 4. 在 Canal Client 的配置文件 `conf/canal.yaml` 中,配置 `group: example`,表示使用 `example` 分组。 5. 在 Canal Client 的启动代码中,使用 `CanalConnector` 的 `connect()` 方法建立连接,并使用 `subscribe()` 方法订阅需要同步的数据库和表。 6. 在 Canal Client 的启动代码中,使用 `start()` 方法启动监听,然后使用 `while` 循环不断读取数据,直到程序停止。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值