Skip to content

Latest commit

 

History

History
218 lines (118 loc) · 12.2 KB

ReadMe.md

File metadata and controls

218 lines (118 loc) · 12.2 KB

canal 集成为 springboot 组件


想法

随着 spring boot 框架的逐渐流行,越来越多的 spring boot 组件随之诞生,今天阿导带大家一起来实现 canal 集成为 spring boot 的组件的详细过程。
我们大佬需要我们做一个数据迁移和数据同步的业务,我就想着将其封装成 springboot 组件,这是写这个组件的初衷。
也许还有小伙伴没接触过 canal ,我其实也刚接触两天左右,想了解的伙伴请前往官网文档
我就不介绍这个 canal 了,因为我也刚看不久,我的见解都会在代码展示,下面来介绍我的思路。

思路

  • 配置构思和书写

  • 连接规则制定

  • 书写 canal 客户端

  • 监听 canal 客户端从 canal 服务端推送的消息,并处理。

  • 处理消息机制,这里使用了集成接口和注解两种方式

  • 测试类去测试所写的组件


实现


使用

组件写好了,那么怎么来使用呢?打个比方,锄头做好了,如何日当午才是关键,哈哈....
首先我们来看看通过 @ConfigurationProperties 注解的 CanalConfig 这个类,能配置的内容在 Instance 这个内部静态类里面,目前支持如下配置:
           
           #是否是集群模式
           canal.client.instances.${wwjd}.clusterEnabled=true
           canal.client.instances.${wwjd}.cluster-enabled=true
           
           #zookeeper 地址
           canal.client.instances.${wwjd}.zookeeperAddress=127.0.0.1:2181,127.1.1.1:2187
           canal.client.instances.${wwjd}.zookeeper-address=127.0.0.1:2181,127.1.1.1:2187
            
           #canal 服务器地址,默认是本地的环回地址
           canal.client.instances.${wwjd}.host=127.0.0.1
            
           #canal 服务设置的端口,默认 11111
           canal.client.instances.${wwjd}.port=11111

           #集群 设置的用户名
           canal.client.instances.${wwjd}.userName=root
           canal.client.instances.${wwjd}.user-name=root
    
           #集群 设置的密码
           canal.client.instances.${wwjd}.password=123456
    
            
           #批量从 canal 服务器获取数据的最多数目
           canal.client.instances.${wwjd}.batchSize=1000
           canal.client.instances.${wwjd}.batch-size=1000
    
           #是否有过滤规则
           canal.client.instances.${wwjd}.filter=.*\\..*
    
           #当错误发生时,重试次树
           canal.client.instances.${wwjd}.retryCount=20
           canal.client.instances.${wwjd}.retry-count=20
    
           #信息捕获心跳时间
           canal.client.instances.${wwjd}.acquireInterval=1000
           canal.client.instances.${wwjd}.acquire-interval=1000

            

####### 假若你所有的环境都搞定了,包括 mysql 开启 binlog 日志,canal 伪装从数据库连接到 mysql 等,然后配置信息都正确,那就开始正文了

启动服务,操作 db,观察数据,至于你想对这些数据干什么,只要不作奸犯科,那随你便了....
    ======================接口方式(修改表信息操作)==========================
    use dao;
    /* ApplicationName=IntelliJ IDEA 2018.1.2 */ ALTER TABLE user ADD age int DEFAULT 18 NOT NULL COMMENT '年龄'
    
    ======================================================
   
    ======================注解方式(修改表信息操作)==========================
    use dao;
    /* ApplicationName=IntelliJ IDEA 2018.1.2 */ ALTER TABLE user ADD age int DEFAULT 18 NOT NULL COMMENT '年龄'
    
    ======================================================
    ======================接口方式(新增数据操作)==========================
    use dao;
    INSERT INTO user(id,name,age) VALUES('85','阿导','107');
    
    ======================================================
    ======================注解方式(新增数据操作)==========================
    use dao;
    INSERT INTO user(id,name,age) VALUES('85','阿导','107');
    
    ======================================================

感言

初识 canal ,不足之处,还望多多指正和批评,阿导在此感谢。