数据分发客户端
组件编码
hzero-boot-transfer
一、简介
1.1 概述
数据分发客户端的功能是按需求对数据的增删改的变更进行拦截并记录更改信息,并将变更数据发送至对应的服务器端。目前提供对数据审计和数据分发的功能
1.2 组件坐标
<dependency>
<groupId>org.hzero.boot</groupId>
<artifactId>hzero-boot-transfer</artifactId>
<version>${hzero.boot.version}</version>
</dependency>
1.3 功能特性
- 作为数据分发服务的数据生产端
- 作为数据审计的数据提供支持
二、使用说明
数据变更监控是数据分发客户端的基础功能,数据分发和数据审计是扩展功能。
- 配置已提供的功能包含数据变更监控,数据分发,数据审计。开启数据分发,数据审计任意之一都必须开启数据监控。
# application.yml
hzero:
transfer:
monitor:
enabled: true # 是否启用数据变更监控功能
dataTransfer:
enabled: true # 是否启用数据变更分发功能
dataAudit:
enabled: true # 是否启用数据变更审计功能
- 自行开发扩展功能步骤
- 新建类实现
DataChangeBaseHandler
类,实现对应抽象方法 - 方法说明:
-
canProcess(EntityTable table)
入参为当前操作数据的EntityTable类,返回值为是否进行处理。如果返回true,会记录当前数据更改记录
-
doProcess(List changeDataList)
客户化逻辑,changeDataList是变化的数据对象
-
doCommit
拦截到的事务提交触发的方法调用,表示数据已经持久化。具体使用方式可以参考数据分发和数据审计
-
- 新建类实现
三、局限性
由于地层实现原因,在使用数据分发框架实现数据审计功能或者数据分发功能的时候,需要注意一下几点限制:
-
暂不支持联合主键和无主键的情况。如果是联合主键,默认会取第一个键作为主键,如果没有主键,将不会对数据进行拦截
-
必须正确使用mybatis标签,比如不能在
<select>
标签下写inert相关的SQL,否则会导致无法拦截 -
0.11.0版本已经支持
insert into select
,但是在使用改语法的时候还需要注意以下几点:-
mapper接口入参使用
@Param
注解的时候值不能为collection
,比如@Param(“collection”)。否则会导致SQL取不到正确的参数值。 -
mapper接口入参如果是对象或者map,则对象的属性值或者map的Key名称不能为
collection
。否则会导致SQL取不到正确的参数值。 -
xm中的SQL不能使用
collection
。形如xx = #{collection},或者<foreach collection="collection">
。可将collection用list
代替
-
四、版本更新日志
版本 0.10.0.RELEASE [2019-07-20]
- 初始发布
版本 0.11.0.RELEASE [2019-07-30]
- 修复不支持foreach语法的BUG
- 支持INSERT INTO SELECT语法