canal的java客户端_GitHub - cjl1001/canal-client: spring boot canal starter 易用的canal 客户端 canal client...
易用的canal 客户端 easy canal client
介绍
canal 是阿里巴巴mysql数据库binlog的增量订阅&消费组件
使用该客户端前请先了解canal,https://github.com/alibaba/canal
canal 自身提供了简单的客户端,如果要转换为数据库的实体对象,处理消费数据要每次进行对象转换。
该客户端直接将canal的数据原始类型转换为各个数据表的实体对象,并解耦数据的增删改操作,方便给业务使用。
要求
java8+
特性
解耦单表增删操作
simple,cluster,zookeeper,kafka客户端支持
同步异步处理支持
spring boot 开箱即用
如何使用
spring boot 方式
maven 依赖
top.javatool
canal-spring-boot-starter
1.2.1-RELEASE
java 方式
top.javatool
canal-client
1.2.1-RELEASE
配置说明
属性
描述
默认值
canal.mode
canal 客户端类型 目前支持4种类型 simple,cluster,zk,kafka(kafka 目前支持flatMessage 格式)
simple
canal.filter
canal过滤的表名称,如配置则只订阅配置的表
""
canal.batch-size
消息的数量,超过该次数将进行一次消费
1(个)
canal.timeout
消费的时间间隔(s)
1s
canal.server
服务地址,多个地址以,分隔 格式 ${host}:${port}
null
canal.destination
canal 的instance 名称,kafka模式为topic 名称
null
canal.user-name
canal 的用户名
null
canal.password
canal 的密码
null
canal.group-id
kafka groupId 消费者订阅消息时可使用,kafka canal 客户端
null
canal.async
是否是异步消费,异步消费时,消费时异常将导致消息不会回滚,也不保证顺序性
true
canal.partition
kafka partition
null
订阅数据库的增删改操作
实现EntryHandler 接口,泛型为想要订阅的数据库表的实体对象,
该接口的方法为 java 8 的 default 方法,方法可以不实现,如果只要监听增加操作,只实现增加方法即可
下面以一个t_user表的user实体对象为例,
默认情况下,将使用实体对象的jpa 注解 @Table中的表名来转换为EntryHandler中的泛型对象,
public class UserHandler implements EntryHandler{
}
如果实体类没有使用jpa @Table的注解,也可以使用@CanalTable 注解在EntryHandler来标记表名,例如
@CanalTable(value = "t_user")
@Component
public class UserHandler implements EntryHandler{
/**
* 新增操作
* @param user
*/
@Override
public void insert(User user) {
//你的逻辑
log.info("新增 {}",user);
}
/**
* 对于更新操作来讲,before 中的属性只包含变更的属性,after 包含所有属性,通过对比可发现那些属性更新了
* @param before
* @param after
*/
@Override
public void update(User before, User after) {
//你的逻辑
log.info("更新 {} {}",before,after);
}
/**
* 删除操作
* @param user
*/
@Override
public void delete(User user) {
//你的逻辑
log.info("删除 {}",user);
}
}
另外也支持统一的处理@CanalTable(value="all"),这样除去存在EntryHandler的表以外,其他所有表的处理将通过该处理器,统一转为Map对象
@CanalTable(value = "all")
@Component
public class DefaultEntryHandler implements EntryHandler> {
@Override
public void insert(Map map) {
logger.info("insert message {}", map);
}
@Override
public void update(Map before, Map after) {
logger.info("update before {} ", before);
logger.info("update after {}", after);
}
@Override
public void delete(Map map) {
logger.info("delete {}", map);
}
}
如果你想获取除实体类信息外的其他信息,可以使用
CanalModel canal = CanalContext.getModel();
canal的java客户端_GitHub - cjl1001/canal-client: spring boot canal starter 易用的canal 客户端 canal client...相关推荐
- Java零基础可以直接入门spring boot吗?
不推荐.一般学习的路线是java基础,然后数据库,接着是spring,了解spring的核心思想,再学springmvc,之后才学springboot. 什么是Spring Boot Spring B ...
- java cxf 双向通讯_CXF 在spring boot 2 发布多个服务
0. 问题来源 之前配置cxf服务端都是在spring 3以下,后来使用spring mvc 还都是基于xml的配置文件模式,在springboot模式下,实现起来更为简单了.此次记录下spring ...
- Java开发 - 问君能有几多愁,Spring Boot瞅一瞅。
前言 首先在这里恭祝大家新年快乐,兔年大吉.本来是想在年前发布这篇博文的,奈何过年期间走街串巷,实在无心学术,所以不得不放在近日写下这篇Spring Boot的博文.在还没开始写之前,我已经预见到,这 ...
- java 模板引擎_极简 Spring Boot 整合 Thymeleaf 页面模板
点击"牧码小子"关注,和众多大牛一起成长! 关注后,后台回复 java ,领取松哥为你精心准备的技术干货! 虽然现在慢慢在流行前后端分离开发,但是据松哥所了解到的,还是有一些公司在 ...
- 精通spring——深入java ee开发核心技术 pdf_2019精通Spring Boot 42讲 高清pdf完整版
<精通springboot42讲价值99元入门到实教程>2019年最新spring boot教程,共计42讲从入门到精通,真正的实战教程. 课程内容和技术栈都会使⽤最新稳定版本,课程数量也 ...
- springboot java获取版本号_深入实践Spring Boot 实战篇,大佬整理出的PDF文档
如何使用Spring Boot 本文章将会详细介绍如何使用Spring Boot.它覆盖了构建系统,自动配置和运行/部署选项等主题.我们也覆盖了一些Spring Boot最佳实践.尽管Spring B ...
- Java工作笔记-使用Maven创建Spring Boot并生成war包外部tocamt运行
目录 基本概念 代码与实例 基本概念 目前发现很多Java项目都是直接使用Maven作项目管理,在Maven中配置依赖,比如Spring boot完成操作,在经历了这么多操作后,还发现大家喜欢把Mav ...
- java开源springboot项目_使用Spring Boot的10多个免费开源项目
这是一个真实的应用程序,为 Spring.io 网站提供支持.它正在生产中,每天都有成千上万的用户使用. 我强烈建议这个项目,你将学习有关Spring框架生态系统,Elasticsearch,Gr ...
- java多模块项目脚手架:Spring Boot + MyBatis 搭建教程
作者 | 枫本非凡 链接 | cnblogs.com/orzlin/p/9717399.html 一.前言 最近公司项目准备开始重构,框架选定为SpringBoot+Mybatis,本篇主要记录了在I ...
最新文章
- 【SSRS】入门篇(二) -- 建立数据源
- tensorflow对应的python版本清单
- PropertyPathFacoryBean获取对象的值
- corosync+pacemaker+nfs提供mysql高可用
- File如何转换成MultipartFile
- leetcode657. 机器人能否返回原点
- SPH(光滑粒子流体动力学)流体模拟实现四:各向异性(Anisotropic)表面光滑(2)
- EDG夺冠!每个队员获赠一套房:背后老板成最大赢家
- Redis,真的不完美!
- 一个JAVA WEB伪全栈的VUE入坑随笔,从零点零五学起
- linux用命令行来执行php程序
- 早期预警系统的组成要素
- 用OCR技术识别验证码---tesseract
- eclipse设置utf8编码_技术分享 | MySQL 8.0:字符集从 utf8 转换成 utf8mb4
- 极域电子书包课堂管理系统_朝阳群众说小康 | 从黑板课本到VR互动课堂、电子书包,朝阳的课堂如此有趣!...
- Audified 发布 Linda IronVerb 混响插件
- MAR DASCTF 2021
- RT-Thread Studio 使用笔记(六)| 获取光传感器数据(I2C设备驱动+BH1750手写驱动代码分享)
- 2022-05-02 Unity核心4——SpriteShape
- 智能开关继电器-选型篇2
热门文章
- common.js 2017
- 海龟策略深入研究-策略回测系列-2:原版海龟策略(上)
- 前端js修改对象的属性值、添加新的属性、删除对象属性
- 2021年化工自动化控制仪表考试内容及化工自动化控制仪表考试报名
- NER —— Bert/ALBert+CRF
- Fontconfig error: failed reading config file解决
- 如何激活jrebel
- Axure RP v8.1.0.3377 Enterprise 中文破解版(附注册机+汉化包+安装教程)
- 时尚巨头确认遭遇勒索攻击、1100万部手机已感染木马|1月19日全球网络安全热点
- 3D数学基础:图形和游戏开发(第2版)第2章笔记