canal学习-运行canal-adapter源码并记录解决报错问题(包含缺失的jar文件)(一)

news2024/9/30 1:43:20

运行canal-adapter

  • 1. 下载canal源码
    • 1.1 下载源码并安装好环境
    • 1.2 查看目录结构
  • 2.项目运行
    • 2.1 项目打包
    • 2.2 项目打包可能遇到的问题:
      • 1.Failure to find com.alibaba.otter:connector.tcp:jar:jar-with-dependencies:1.1.5
      • 2.com.alibaba.druid.pool.DruidDataSource cannot be cast to com.alibaba.druid.pool.DruidDataSource
  • 3.配置application.yml
  • 4.运行项目
    • 4.1 运行启动类:CanalAdapterApplication.java
    • 4.2 Config dir not found 报错解决
  • 5.可直接运行的项目源码

省流:最后面有能直接跑的源码,可以直接下载运行

1. 下载canal源码

1.1 下载源码并安装好环境

官网地址:https://github.com/alibaba/canal/releases/tag/canal-1.1.5
在这里插入图片描述
服务端的部署参考我之前写过的文档: canal实时同步mysql数据到elasticsearch,注意只需要去部署一个服务端
保证以下组件已经安装运行

组件版本
mysql8.0.23
elasticsearch7.9.0

1.2 查看目录结构

下载解压后的目录结构如下,我们当前只关注客户端的代码
在这里插入图片描述
在这里插入图片描述

2.项目运行

使用idea打开项目,由于需求是往es同步数据,因此需要关注以下三个模块
在这里插入图片描述

2.1 项目打包

打包顺序如下,务必不要打乱顺序,模块之间存在依赖

  1. escore->mvn clean install
  2. es7x->mvn clean install
  3. launcher->mvn clean install

在这里插入图片描述

2.2 项目打包可能遇到的问题:

1.Failure to find com.alibaba.otter:connector.tcp:jar:jar-with-dependencies:1.1.5

[ERROR] Failed to execute goal on project client-adapter.launcher: Could not resolve dependencies for project com.alibaba.otter:client-adapter.launcher:jar:1.1.5: Failure to find com.alibaba.otter:connector.tcp:jar:jar-with-dependencies:1.1.5 in https://maven.aliyun.com/repository/public was cached in the local repository, resolution will not be reattempted until the update interval of aliyunmaven has elapsed or updates are forced -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 

原因:connector.tcp maven下载不到导致的,tmd吊jar包找了半天才找到,还要劳资扫码关注才能下载

链接:https://pan.baidu.com/s/1Biw-Gwum-vPaqfWhqc_gGQ?pwd=of2e
提取码:of2e

解决方案:下载jar后放到报错信息中maven仓库的位置
在这里插入图片描述
在这里插入图片描述

2.com.alibaba.druid.pool.DruidDataSource cannot be cast to com.alibaba.druid.pool.DruidDataSource

ERROR c.a.o.canal.adapter.launcher.loader.CanalAdapterLoader - Load canal adapter: es7 failed
java.lang.RuntimeException: java.lang.RuntimeException: java.lang.ClassCastException: com.alibaba.druid.pool.DruidDataSource cannot be cast to com.alibaba.druid.pool.DruidDataSource
	at com.alibaba.otter.canal.client.adapter.es7x.ES7xAdapter.init(ES7xAdapter.java:54) ~[client-adapter.es7x-1.1.5-jar-with-dependencies.jar:na]
	at co 
Caused by: java.lang.RuntimeException: java.lang.ClassCastException: com.alibaba.druid.pool.DruidDataSource cannot be cast to com.alibaba.druid.pool.DruidDataSource
	at com.alibaba.otter.canal.client.adapter.es.core.ESAdapter.init(ESAdapter.java:83) ~[client-adapter.es7x-1.1.5-jar-with-dependencies.jar:na]
	at com.alibaba.otter.canal.client.adapter.es7x.ES7xAdapter.init(ES7xAdapter.java:52) ~[client-adapter.es7x-1.1.5-jar-with-dependencies.jar:na]
	... 42 common frames omitted
Caused by: java.lang.ClassCastException: com.alibaba.druid.pool.DruidDataSource cannot be cast to com.alibaba.druid.pool.DruidDataSource
	at com.alibaba.otter.canal.client.adapter.es.core.ESAdapter.addSyncConfigToCache(ESAdapter.java:146) ~[client-adapter.es7x-1.1.5-jar-with-dependencies.jar:na]
	at com.alibaba.otter.canal.client.adapter.es.core.ESAdapter.init(ESAdapter.java:75) ~[client-adapter.es7x-1.1.5-jar-with-dependencies.jar:na]
	... 43 common frames omitted
2023-05-15 21:29:59.969 [main] INFO  c.alibaba.otter.canal.connector.core.spi.ExtensionLoader - extension classpath dir: D:\IdeaProjects\canal\canal-canal-1.1.5\client-adapter\launcher\target\canal-adapter\plugin
2023-05-15 21:29:59.985 [main] INFO  c.a.o.canal.adapter.launcher.loader.CanalAdapterLoader - Start adapter for canal-client mq topic: cqu-g1 succeed
2023-05-15 21:29:59.985 [main] INFO  c.a.o.canal.adapter.launcher.loader.CanalAdapterService - ## the canal client adapters are running now ......
2023-05-15 21:29:59.985 [Thread-9] INFO  c.a.otter.canal.adapter.launcher.loader.AdapterProcessor - =============> Start to connect destination: cqu <=============
2023-05-15 21:29:59.989 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-8081"]
2023-05-15 21:29:59.989 [main] INFO  org.apache.tomcat.util.net.NioSelectorPool - Using a shared selector for servlet write/read
2023-05-15 21:30:00.023 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 8081 (http) with context path ''
2023-05-15 21:30:00.026 [main] INFO  c.a.otter.canal.adapter.launcher.CanalAdapterApplication - Started CanalAdapterApplication in 3.208 seconds (JVM running for 4.171)
2023-05-15 21:30:00.100 [Thread-9] INFO  c.a.otter.canal.adapter.launcher.loader.AdapterProcessor - =============> Subscribe destination: cqu succeed <=============

原因:common和escore的druid包冲突
解决方案:
限制escore的pom文件中的druid的作用域,定位到 client-adapter.escore 模块的 pom.xml
在这里插入图片描述
上图红框出修改为

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <scope>provided</scope>
</dependency>

3.配置application.yml

在这里插入图片描述
在这里插入图片描述

server:
  port: 8081
spring:
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8
    default-property-inclusion: non_null

canal.conf:
  mode: tcp #tcp kafka rocketMQ rabbitMQ
  flatMessage: true
  zookeeperHosts:
  syncBatchSize: 10000
  retries: 0
  timeout:
  accessKey:
  secretKey:
  consumerProperties:
    # canal tcp consumer
    canal.tcp.server.host: 192.168.0.10:11111 #canal服务端地址
    canal.tcp.zookeeper.hosts:
    canal.tcp.batch.size: 5000
    canal.tcp.username:
    canal.tcp.password:

  srcDataSources:
    defaultDS:
      url: jdbc:mysql://192.168.0.10:3306/dev_db?useUnicode=true #测试数据库连接
      username: canal #数据库账号
      password: canal #数据库密码
  canalAdapters:
    - instance: cqu # canal instance Name or mq topic name
      groups:
        - groupId: g1
          outerAdapters:
            - name: es7 # ES同步适配器
              hosts: http://192.168.0.10:11700 # ES连接地址
              properties:
                mode: rest # 模式可选transport(9300) 或者 rest(9200)
                cluster.name: es-single # ES集群名称, 与es目录下 elasticsearch.yml文件cluster.name对应

4.运行项目

4.1 运行启动类:CanalAdapterApplication.java

在这里插入图片描述

4.2 Config dir not found 报错解决

运行时可能会有的报错:

ERROR c.a.o.canal.adapter.launcher.loader.CanalAdapterLoader - Load canal adapter: es7 failed
java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: Config dir not found.
	at com.alibaba.otter.canal.client.adapter.es7x.ES7xAdapter.init(ES7xAdapter.java:54) ~[client-adapter.es7x-1.1.5-jar-with-dependencies.jar:na]
	at com.alibaba.otter.canal.adapter.launcher.loader.CanalAdapterLoader.loadAdapter(CanalAdapterLoader.java:225) [classes/:na]
	at com.alibaba.otter.canal.adapter.launcher.loader.CanalAdapterLoader.init(CanalAdapterLoader.java:56) [classes/:na]
	at com.alibaba.otter.canal.adapter.launcher.loader.CanalAdapterService.init(CanalAdapterService.java:60) [classes/:na]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_221]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_221]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_221]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_221]

原因:launcher模块下缺少es7文件夹
解决:将es7x下的es7文件夹复制到launcher的resources目录下
在这里插入图片描述
在这里插入图片描述
target中生成的文件
在这里插入图片描述
重新运行,即可运行成功
在这里插入图片描述

5.可直接运行的项目源码

以下代码在运行前,需要在根目录执行mvn clean install 命令,然后修改application.yml的配置后就可以直接运行。
在这里插入图片描述

链接:https://pan.baidu.com/s/1sKOdIdAMGkgHP1XddWfGLA?pwd=yw33
提取码:yw33

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/545525.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数字信号处理基础(三):FIR滤波器的设计

目录 1. 滤波器1.1 低通滤波器1.2 高通滤波器1.3 带通滤波器1.4 带阻滤波器 2. 完整代码3. 结果图 1. 滤波器 1.1 低通滤波器 低通滤波器需要知道低通截止频率&#xff0c;然后采用以下代码实现 % 低通滤波器设计 fp2*10000; % 低通滤波器截止频率&#x…

安全测试之使用Docker搭建SQL注入安全测试平台sqli-labs

1 搜索镜像 docker search sqli-labs 2 拉取镜像 docker pull acgpiano/sqli-labs 3 创建docker容器 docker run -d --name sqli-labs -p 10012:80 acgpiano/sqli-labs 4 访问测试平台网站 若直接使用虚拟机&#xff0c;则直接通过ip端口号访问若通过配置域名&#xff0…

2023-5-20-各种编译器的全面学习

&#x1f37f;*★,*:.☆(&#xffe3;▽&#xffe3;)/$:*.★* &#x1f37f; &#x1f4a5;&#x1f4a5;&#x1f4a5;欢迎来到&#x1f91e;汤姆&#x1f91e;的csdn博文&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f49f;&#x1f49f;喜欢的朋友可以关注一下&#xf…

网站投票软件投票链接制作软件投票链接小程序投票程序

近些年来&#xff0c;第三方的微信投票制作平台如雨后春笋般络绎不绝。随着手机的互联网的发展及微信开放平台各项基于手机能力的开放&#xff0c;更多人选择微信投票小程序平台&#xff0c;因为它有非常大的优势。 1.它比起微信公众号自带的投票系统、传统的H5投票系统有可以图…

LLVM-Clang交叉编译详细教程

文章目录 前言对比GCC与ClangClang交叉编译参数选项安装交叉编译器交叉编译生成二进制文件Target Arch列表Target Triple列表参考文档后话 前言 最近自己写了个C的小项目&#xff0c;想在Windows编译出其他平台的二进制文件的话&#xff0c;只能交叉编译了&#xff0c;于是就选…

性能测试-JMeter分布式测试及其详细步骤

性能测试概要 性能测试是软件测试中的一种&#xff0c;它可以衡量系统的稳定性、扩展性、可靠性、速度和资源使用。它可以发现性能瓶颈&#xff0c;确保能满足业务需求。很多系统都需要做性能测试&#xff0c;如Web应用、数据库和操作系统等。 性能测试种类非常多&#xff0c;…

深入学习《c语言函数》

&#x1f4d5;博主介绍&#xff1a;目前大一正在学习c语言&#xff0c;数据结构&#xff0c;计算机网络。 c语言学习&#xff0c;是为了更好的学习其他的编程语言&#xff0c;C语言是母体语言&#xff0c;是人机交互接近底层的桥梁。 本章学习函数。 让我们开启c语言学习之旅吧…

Mybatis管理数据库

快速入门 使用idea工具操作数据库使用Mybatis查询所有用户数据第一步创建springboot工程&#xff0c;数据库表user&#xff0c;实体类User第二步&#xff0c;引入Mybatis的相关依赖&#xff0c;配置Mybatis&#xff08;数据库连接信息&#xff09;第三步&#xff0c;编写sql语句…

Jmeter工具+ant+jenkins实现持续集成

jmeterantjenkins持续集成 一、下载并配置jmeter 首先下载jmeter工具&#xff0c;并配置好环境变量&#xff1b;参考&#xff1a; jmeter默认保存的是.jtl格式的文件&#xff0c;要设置一下bin/jmeter.properties,文件内容&#xff0c;保存jmeter.save.saveservice.output_f…

关于华为云负载均衡ELB健康检查显示离线的排查问题及解决办法

由于项目中经常涉及到检修升级操作&#xff0c;在进行检修升级时&#xff0c;服务就需要停止一段时间&#xff0c;检修结束后重启&#xff0c;在此期间相关的功能页面都将无法访问。甲方反馈&#xff0c;需要停止服务的检修工作暂时不予执行。因此&#xff0c;为了不耽误系统的…

低代码搭建制造管理系统,你要知道的哪些事~

随着数字化转型的推进&#xff0c;制造业也逐渐意识到数字化转型的重要性。数字化转型不仅可以提高制造业的效率和品质&#xff0c;还可以降低成本和提高客户满意度。在数字化转型中&#xff0c;低代码搭建制造管理系统是一种比较有效的方式。本文将介绍低代码搭建制造管理系统…

深入篇【C++】类与对象:再谈构造函数之初始化列表与explicit关键字

深入篇【C】类与对象&#xff1a;再谈构造函数之初始化列表与explicit关键字 Ⅰ.再谈构造函数①.构造函数体赋值②.初始化列表赋值【<特性分析>】1.至多性2.特殊成员必在性3.必走性&#xff1a;定义位置4.一致性5.不足性 Ⅱ.explicit关键字①.隐式类型转化②.作用 Ⅰ.再谈…

Spring Cloud Alibaba 集成 sentinel ,sentinel控制台不能检测到服务,但是在命令行配置启动参数就能看到服务

问题背景 Spring Cloud Alibaba 集成 sentinel &#xff0c;sentinel代码写的限流降级的功能都是好的&#xff0c;但是sentinel控制台不能检测到服务&#xff0c;在程序启动时配置JVM启动参数&#xff08;-Dcsp.sentinel.dashboard.serverlocalhost:18080 -Dproject.namename-…

分公司的负责人要如何承担责任

一、分公司的负责人要如何承担责任 1、分公司的负责人不需要承担责任&#xff0c;因为没有法人资格&#xff0c;没有独立的财产权。根据相关法律规定&#xff0c;分公司的债务由总公司承担连带责任&#xff0c;当然可以先由分公司的全部财产承担。 2、法律依据&#xff1a;《…

小白量化《穿云箭集群量化》(9)用指标公式实现miniQMT全自动交易

小白量化《穿云箭集群量化》&#xff08;9&#xff09;用指标公式实现miniQMT全自动交易 在穿云箭量化平台中&#xff0c;支持3中公式源码运行模式&#xff0c;还支持在Python策略中使用仿指标公式源码运行&#xff0c;编写策略。 我们先看如何使用指标公式源码。 #编程_直接使…

【2023秋招】每日一题:P1087-美团3-18真题 + 题目思路 + 所有语言带注释

2023大厂笔试模拟练习网站&#xff08;含题解&#xff09; www.codefun2000.com 最近我们一直在将收集到的各种大厂笔试的解题思路还原成题目并制作数据&#xff0c;挂载到我们的OJ上&#xff0c;供大家学习交流&#xff0c;体会笔试难度。现已录入200道互联网大厂模拟练习题&…

【C生万物】 指针和数组笔试题汇总 (下)

欢迎来到 Claffic 的博客 &#x1f49e;&#x1f49e;&#x1f49e; &#x1f449; 专栏&#xff1a;《C生万物 | 先来学C》&#x1f448; 前言&#xff1a; 承接上文&#xff0c;继续进行指针和数组的练习。 目录 Part2:指针笔试题 1.做题 …

硬件系统工程师宝典(24)-----如何能够正确理解三极管?

各位同学大家好&#xff0c;欢迎继续做客电子工程学习圈&#xff0c;今天我们继续来讲这本书&#xff0c;硬件系统工程师宝典。上篇我们说到不同材质的磁珠&#xff0c;频率阻抗特性不同&#xff0c;根据磁珠的频率阻抗特性曲线&#xff0c;磁珠在低频时电感起作用&#xff0c;…

Java开源工具库使用之压测JMeter

文章目录 前言一、概念原理1.1 Jmeter 原理1.2 性能测试术语1.3 web项目性能标准 二、常用元件2.1 线程组2.2 取样器2.3 控制器2.4 定时器2.5 前置/后置处理器2.6 配置元件2.7 监听器 三、插件3.1 第三方插件3.2 录制插件 四、JSR223 脚本及函数4.1 JSR223 脚本4.2 函数变量 五…

职场难题:克服压力、提升自我能力,勇闯职场巅峰

在当今激烈的职场竞争中&#xff0c;职场难题时常出现&#xff0c;如何进行有效沟通、如何应对工作压力、如何提升职业能力等&#xff0c;这些问题都是需要克服的问题。作为一名在职场中求生存&#xff0c;求发展的职业人士&#xff0c;我们必须学会适应这些挑战&#xff0c;掌…