TiCDC Canal-JSON 消息接收示例(Java 版)

本文详细介绍了如何使用TiCDC的CdcMessage在Java服务中处理用户表数据变更,包括从Kafka获取CDC消息,解析数据类型,以及调用业务服务进行插入、更新或删除操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.引言

业务程序经常会通过各式各样的缓存来提升用户的访问速度。

由于存在缓存,在一些实时性要求较高的场景中,需要在数据变更的同时将数据缓存进行更新或删除。

如果数据本身由其他业务部门提供,就无法在写入的同时做缓存的一致性处理。

此时,可以通过其他业务部门暴露数据变更通知来感知到数据变化,从而保证数据的更新及时性。

TiCDC 是一款 TiDB 增量数据同步工具,通过拉取上游 TiKV 的数据变更日志,TiCDC 可以将数据解析为有序的行级变更数据输出到下游。

因此,可以通过 TiCDC 将数据变更通知暴露给业务程序,来让业务程序做及时的对应处理逻辑。

本文以一张用户表的数据变更为例,来展示 Java 服务端接收一条 TiCDC Canal-JSON 的消息变更,解析数据,并转发给对应的业务处理程序的流程。

之前写类似的程序时,网上搜索到的案例还是比较少的,本文仅抛砖引玉,欢迎各位大佬批评指正!

2. 代码思路

(1)通过 kafka 消息获取 CDC 消息

(2)解析 CDC 消息,判断其数据变更类型,执行对应的处理逻辑

3. 代码实现

3.1 代码结构

cdc-demo
└─ src
    └─ main
        └─ java
         └─ com.example.demo
           ├─ constants
           │    └─ CdcConstants.java
           ├─ dto
           │    ├─ CdcMessage.java
           │    └─ User.java
           ├─ job
           │    ├─ CdcJob.java
           │    └─ UserCdcJob.java
           └─ service
                ├─ impl
                │   └─ UserServiceImpl.java
                └─ CdcService.java

3.2 CDC 常量类

public class CdcConstants {
​
    public enum MessageType {
        /**
         * 插入操作
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值