renxue
2022-10-24 0b055a3f554da3a934e79e88c4781705cbab5a21
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package com.hz.canal.starter.mode;
 
import com.alibaba.otter.canal.protocol.CanalEntry;
 
import java.io.Serializable;
 
/**
 * 监听事件的 返回信息, 主要将 CanalEntry 里不同层级的常用数据组装到同一层级使用.<p>
 * entryHeader 是为了方便获取其他数据,比如: 获取日志文件名、日志文件偏移量等
 *
 * @author wuqiong 2022/8/15
 */
public class CanalMessage implements Serializable {
    private static final long serialVersionUID = 730485362580815032L;
 
    /**
     * 发生变化的 事件类型
     */
    private CanalEntry.EventType eventType;
 
    /**
     * 发生变化的数据
     */
    private CanalEntry.RowData rowData;
 
    /**
     * 头信息, 包含: sql执行时间、数据库日志文件名、数据库日志文件偏移量 等信息
     */
    private CanalEntry.Header entryHeader;
 
    /**
     * 构造返回数据信息
     *
     * @param entryHeader 头信息
     * @param eventType   事件类型
     * @param rowData     变化的数据
     * @author wuqiong 2022/8/15 16:18
     */
    public CanalMessage(CanalEntry.Header entryHeader, CanalEntry.EventType eventType, CanalEntry.RowData rowData) {
        this.entryHeader = entryHeader;
        this.eventType = eventType;
        this.rowData = rowData;
    }
 
    /**
     * 数据库名
     */
    public String getDataBaseName() {
        return getEntryHeader().getSchemaName();
    }
 
    /**
     * 表名
     */
    public String getTableName() {
        return getEntryHeader().getTableName();
    }
 
    public CanalEntry.EventType getEventType() {
        return eventType;
    }
 
    public CanalEntry.RowData getRowData() {
        return rowData;
    }
 
    public CanalEntry.Header getEntryHeader() {
        return entryHeader;
    }
}