# canal-application **Repository Path**: ccccccx/canal-application ## Basic Information - **Project Name**: canal-application - **Description**: canal集成springboot应用.形成自定义canal-spring-boot-starter, 直接依赖!快速开发!! - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 7 - **Created**: 2024-10-24 - **Last Updated**: 2024-10-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # canal整合springboot 实现数据变化的业务处理 ## 整合SpringBoot,形成canal-spring-boot-starter, 快速开发组件. 只需mvn clean install, 打包入本地仓库 , 并引用对应的包地址即可. ## 示例模块详见canal-appliaction-example ## 快速上手使用流程: ### 1.搭建好Canal Server服务端, 并启动. 建议参考官方手册 : https://github.com/alibaba/canal/wiki/Docker-QuickStart ### 2.application文件里配置canal对应的相关参数 . (配置好filter, 即需要监听哪些表) ### 3.实现AbstractEventHandler接口,并标注上@TableEvent注解(配置好对应的表名和监听事件). 记得不要忘记把该类标注为SpringBean哦!!! #### 只需两步.启动主启动类.随之ListenerInitialization初始监听器就会开始工作,开始你的业务之旅吧. ### Just enjoy yourself!!! ## 架构思想介绍: ### 入口: QuickCanalClientListener 1.利用SpringBoot的自动装配原理.将canal相关的配置参数写在application的配置文件里.CanalAutoConfiguration完成SpringBean的装配.自动装配核心点在工程resource路径下的META-INF/spring.factories文件里. 2.考虑到对不同的表,会有不同的业务逻辑操作, 所以数据库+表名+mysql里事件类型 组合成一个唯一的key, 可以对应为一个EventHandler.固定抽象接口AbstractEventHandler(其中包含了rowData数据的默认解析器, 默认解析并封装数据为JSON格式). 业务上只需实现固定的AbstractEventHandler接口, 完成对handle方法的业务实现.并搭配自定义注解@TableEvent. 3.QuickCanalClientListener循环向Canal Server端索要数据.拿到数据后, 才用策略+工厂模式. 交给EventHandlerFactory工厂去找寻对应的处理器处理.层层调用.形成闭环: 监听,产生原始数据 -> 解析加工原始数据 -> 业务方消费处理数据