binlog4j 1.1.0 发布,Java 轻量级 MySQL Binlog 客户端
Binlog4j
轻量级 Mysql Binlog 客户端, 提供宕机续读, 高可用集群等特性
项目特性
-
集群模式, 通过集群部署的方式,保证服务高可用。
-
宕机续读, 避免宕机期间造成数据丢失。
-
数据转换, 基于泛型封装 binlog Event 的序列化数据。
-
兼容 传统项目 与 Spring Boot / Cloud 项目。
-
兼容 Spring Boot 2.x 与 Spring Boot 3.x 版本。
更新内容(1.1.0)
[破坏] IBinlogEventHandler 接口入参由 T 调整为 BinlogEvent。
[新增] @BinlogSubscriber 注解 database 与 table 属性 pattern 匹配。
[新增] @BinlogSubscriber 注解 database 与 table 属性默认值为 .*。
[移动] BinlogUtils 包路径为 com.gitee.Jmysy.binlog4j.core.utils。
[新增] PatternUtils 内置工具 Class
下载安装
<dependency> <groupId>com.gitee.Jmysy</groupId> <artifactId>binlog4j-core</artifactId> <version>latest.version</version> </dependency>
或
implementation group: 'com.gitee.Jmysy', name: 'binlog4j-core', version: 'latest.version'
简单使用
通过 BinlogClient 创建 binlog 客户端, IBinlogEventHandler 用于接受 binlog 事件通知, 该接口允许使用泛型, 数据将遵循驼峰规则进行封装。
public class BootStrap { public static void main(String[] args) { BinlogClientConfig clientConfig = new BinlogClientConfig(); clientConfig.setHost("127.0.0.1"); clientConfig.setPort(3306); clientConfig.setUsername("root"); clientConfig.setPassword("taoren@123"); clientConfig.setServerId(1990); IBinlogClient binlogClient = new BinlogClient(clientConfig); binlogClient.registerEventHandler("database", "table", new IBinlogEventHandler() { @Override public void onInsert(BinlogEvent event) { System.out.println("插入数据:{}", event.getData()); } @Override public void onUpdate(BinlogEvent event) { System.out.println("修改数据:{}", event.getData()); } @Override public void onDelete(BinlogEvent event) { System.out.println("删除数据:{}", event.getData()); } }); binlogClient.connect(); } }
高级特性
通过 Persistence 配置为 true 启用宕机续读功能, Binlog4j 会将 binlog 的 filename 与 position 记录到 redis, 所以同时你需要设置 Redis 配置。
public class BootStrap { public static void main(String[] args) { RedisConfig redisConfig = new RedisConfig(); redisConfig.setHost("127.0.0.1"); redisConfig.setPort(6379); redisConfig.setPassword("taoren@123"); BinlogClientConfig clientConfig = new BinlogClientConfig(); clientConfig.setHost("127.0.0.1"); clientConfig.setPort(3306); clientConfig.setUsername("root"); clientConfig.setPassword("taoren@123"); clientConfig.setServerId(1990); // Client 编号 clientConfig.setRedisConfig(redisConfig); // Redis 配置 clientConfig.setPersistence(true); // 启用持久化 (宕机重启后, 从上次读取的位置开始) clientConfig.setMode(BinlogClientMode.cluster); // 高可用集群 BinlogClient binlogClient = new BinlogClient(clientConfig); binlogClient.registerEventHandler("database", "table", new IBinlogEventHandler<User>() { @Override public void onInsert(BinlogEvent<User> event) { System.out.println("插入数据:{}", event.getData()); } @Override public void onUpdate(BinlogEvent<User> event) { System.out.println("修改数据:{}", event.getData()); } @Override public void onDelete(BinlogEvent<User> event) { System.out.println("删除数据:{}", event.getData()); } }); binlogClient.connect(); } }
Spring Boot Starter
<dependency> <groupId>com.gitee.Jmysy</groupId> <artifactId>binlog4j-spring-boot-starter</artifactId> <version>latest.version</version> </dependency>
或
implementation group: 'com.gitee.Jmysy', name: 'binlog4j-spring-boot-starter', version: 'latest.version'
首先, 在 application.yml 中填写 BinlogClient 配置
spring: binlog4j: redis-config: host: 127.0.0.1 port: 6379 password: taoren@123 client-configs: master: username: root password: taoren@123 host: 127.0.0.1 port: 3306 serverId: 1990
使用 @BinlogSubscriber 注解, 指定 IBinlogEventHandler 需要注册到哪个客户端, 并且指定监听的 database 与 table。
@BinlogSubscriber(clientName = "master", database = "pear-admin", table ="sys_user") public class UserEventHandler implements IBinlogEventHandler<User> { @Override public void onInsert(BinlogEvent<User> event) { System.out.println("插入数据:" + event.getData()); } @Override public void onUpdate(BinlogEvent<User> event) { System.out.println("修改数据:" + event.getData()); } @Override public void onDelete(BinlogEvent<User> event) { System.out.println("删除数据:" + event.getData()); } }
多表监听, database 与 table 使用 Pattern 匹配, 泛型不应该再被使用, data 默认为 Map<String, Object> 类型
@BinlogSubscriber(clientName = "master", database = ".*", table ="sys.*") public class UserEventHandler implements IBinlogEventHandler<User> { @Override public void onInsert(BinlogEvent<User> event) { System.out.println("数据库:" + event.getDatabase()); System.out.println("数据表:" + event.getTable()); System.out.println("新数据:" + event.getData()); } @Override public void onUpdate(BinlogEvent<User> event) { System.out.println("数据库:" + event.getDatabase()); System.out.println("数据表:" + event.getTable()); System.out.println("原数据:" + event.getOriginalData()); System.out.println("新数据:" + event.getData()); } @Override public void onDelete(BinlogEvent<User> event) { System.out.println("数据库:" + event.getDatabase()); System.out.println("数据表:" + event.getTable()); System.out.println("新数据:" + event.getData()); } }

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Intel One Mono 1.3.0 发布,英特尔面向开发者打造的开源字体
Intel One Mono 是英特尔面向开发者打造的开源等宽字体,集清晰度、易读性和开发者视力保护于一体。 Intel One Mono 字体涵盖了 200 多种使用拉丁文字的语言,提供四种粗细 —— Light、Regular、Medium 和 Bold,并带有默认的斜体。 该系列字体由Frere-Jones Type 、英特尔品牌团队和 VMLY&R 合作开发,在构建时充分考虑到了清晰度、易读性和开发者的视觉疲劳和眼睛疲劳问题。 Intel One Mono v1.3 主要变化: 通过源代码中的 ccmp 和标记功能改进语言支持 添加 calt 功能以升高冒号,从而与运算符对齐 更新跨字体、来源和许可证的系列名称:Intel One Mono 更新连字符、endash、emdash、grave、uni2011 和 uni2015 的插图和提示 改进源和构建中样式的链接 下载地址
- 下一篇
最“佛系”Linux 发行版 —— Bodhi Linux 7.0 发布
Bodhi Linux(“菩提 Linux”)是基于 Ubuntu 的桌面 Linux 发行版,其特色在于优雅及轻量级的 Enlightenment 窗口管理器。该项目从 Enlightenment 的软件开发仓库中直接集成并预配置最新的 Enlightenment,提供了模块特性、高度的可定制性及主题选择。 缺省的 Bodhi 系统很小巧,仅有的预安装程序是 Midori、Terminology、EFM (Enlightenment File Manager)、ePhoto 及 ePad,而更多的软件可通过一个基于网页的、称为 Bodhi 软件中心的软件安装工具获取。 Bodhi Linux 7.0 的发布公告写道,这是一个具有重要里程碑意义的版本。它基于 Ubuntu 22.04 LTS 构建,默认使用基于 Enlightenment 的桌面环境和 Moksha 窗口管理器。 Bodhi Linux 7.0 还新增了“s76”版本——该版本采用更新的内核(即 Linux 6.4),由 System76 为需要更高性能的用户打包。 ▲ Bodhi Linux 7.0采用全新绿色主题 ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Red5直播服务器,属于Java语言的直播服务器
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2全家桶,快速入门学习开发网站教程
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2整合Redis,开启缓存,提高访问速度