canal 集成为 springboot 组件
想法
随着 spring boot 框架的逐渐流行,越来越多的 spring boot 组件随之诞生,今天阿导带大家一起来实现 canal 集成为 spring boot 的组件的详细过程。
我们大佬需要我们做一个数据迁移和数据同步的业务,我就想着将其封装成 springboot 组件,这是写这个组件的初衷。
也许还有小伙伴没接触过 canal ,我其实也刚接触两天左右,想了解的伙伴请前往官网文档
我就不介绍这个 canal 了,因为我也刚看不久,我的见解都会在代码展示,下面来介绍我的思路。
思路
-
配置构思和书写
-
连接规则制定
-
书写 canal 客户端
-
监听 canal 客户端从 canal 服务端推送的消息,并处理。
-
处理消息机制,这里使用了集成接口和注解两种方式
-
测试类去测试所写的组件
实现
-
创建配置文件
-
CanalConfig.java:读取 spring boot 配置文件信息
-
CanalClientConfiguration.java:加载 canal 配置,并启动客户端
-
-
注解使其成为 spring boot 组件
EnableCanalClient.java:该注解作用是启用 canal
-
canal 客户端书写:SimpleCanalClient.java
-
初始化监听器(注解方式:CanalEventListener.java;实现接口方式:DealCanalEventListener.java),这里通过一个工具类,BeanUtil,通过反射注入 bean (包含通过接口方式实现数据同步和注解方式的数据同步).
-
开启 canal 客户端,若是开启多个客户端,会开启多个进程。
-
初始化一个线程池,使得线程复用,减小频繁创建线程带来的内存开销。
-
通过线程池开启 canal 客户端,每一个客户端都是一个线程。
-
-
canal 客户端处理消息过程: