在Spring Boot中监听MySQL的 Binlog可以借助第三方的库来实现,个中比较常用的是利用Canal 或者利用MaxWell。这两种办法都是通过解析MySQL的Binlog日志来实现实时监控数据库的变革,并将变革的数据进行处理。
利用 CanalCanal是阿里巴巴开源的MySQL数据库的增量订阅&消费组件,支持MySQL 5.0及以上的版本。通过Canal可以实时地获取MySQL数据库的变更信息。
添加Canal依赖

<dependency> <groupId>com.alibaba.otter</groupId> <artifactId>canal.client</artifactId> <version>1.1.5</version></dependency>
编写Canal监听器
@Componentpublic class CanalListener implements CanalEventListener { @Override public void onEvent(List<CanalEntry.Entry> entries) { // 处理 Binlog 变更事宜 for (CanalEntry.Entry entry : entries) { // 解析 Binlog 数据并进行相应处理 System.out.println("Received Binlog event: " + entry.toString()); } }}
配置Canal客户端
在配置文件中配置Canal客户真个连接信息。在Spring Boot运用启动时启动Canal客户端,监听MySQL的Binlog变更。
利用MaxWellMaxWell是开源的MySQL数据库的增量订阅&消费组件,它能够以JSON的形式输出MySQL数据库的变更信息。实在现如下所示。
添加MaxWell依赖
<dependency> <groupId>com.zendesk</groupId> <artifactId>maxwell-core</artifactId> <version>2.0.12</version></dependency>
配置MaxWell客户端
在配置文件中配置 MaxWell 客户真个连接信息。
编写MaxWell监听器
@Componentpublic class MaxWellListener extends AbstractProducer { @Override public void push(RowMap rowMap) throws Exception { // 处理 Binlog 变更事宜 System.out.println("Received Binlog event: " + rowMap.toJSON()); }}
启动MaxWell客户端
在SpringBoot运用启动时启动MaxWell客户端,监听MySQL的Binlog变更。
总结以上便是两种比较常用的监听Binlog变革的实现方案,当然在实际利用场景中,也可以通过自定义监听器的办法来实现对付数据库Binlog的监听。在后续分享中会给大家分享关于如何自定义Binlog监听。