Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
clx-performance
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
姜武杰
clx-performance
Commits
a9aff16b
提交
a9aff16b
authored
9月 24, 2023
作者:
liruixin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
dts监听订单表
上级
e2772cc7
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
100 行增加
和
11 行删除
+100
-11
DtsOperationTypeEnum.java
.../java/com/clx/performance/enums/DtsOperationTypeEnum.java
+45
-0
DataTransportDTO.java
...va/com/clx/performance/dto/zjxl/dts/DataTransportDTO.java
+46
-0
OrderChildDtsListener.java
...a/com/clx/performance/listener/OrderChildDtsListener.java
+9
-11
没有找到文件。
performance-api/src/main/java/com/clx/performance/enums/DtsOperationTypeEnum.java
0 → 100644
浏览文件 @
a9aff16b
package
com
.
clx
.
performance
.
enums
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
java.util.Arrays
;
import
java.util.Objects
;
import
java.util.Optional
;
import
java.util.stream.Stream
;
@Getter
@AllArgsConstructor
public
enum
DtsOperationTypeEnum
{
// 数据操作类型
INSERT
(
1
,
"INSERT"
),
UPDATE
(
2
,
"UPDATE"
),
DELETE
(
3
,
"DELETE"
),
DDL
(
4
,
"DDL"
),
BEGIN
(
5
,
"BEGIN"
),
COMMIT
(
6
,
"COMMIT"
),
HEARTBEAT
(
7
,
"HEARTBEAT"
),
CHECKPOINT
(
8
,
"CHECKPOINT"
),
UNKNOWN
(
9
,
"UNKNOWN"
),
;
private
final
Integer
code
;
private
final
String
msg
;
public
static
String
getMsg
(
Integer
code
)
{
return
Arrays
.
stream
(
values
())
.
filter
(
e
->
Objects
.
equals
(
e
.
code
,
code
))
.
findFirst
()
.
map
(
DtsOperationTypeEnum:
:
getMsg
)
.
orElse
(
""
);
}
public
static
Optional
<
DtsOperationTypeEnum
>
getByMsg
(
String
msg
)
{
return
Stream
.
of
(
values
()).
filter
(
q
->
Objects
.
equals
(
q
.
getMsg
(),
msg
)).
findFirst
();
}
}
performance-web/src/main/java/com/clx/performance/dto/zjxl/dts/DataTransportDTO.java
0 → 100644
浏览文件 @
a9aff16b
package
com
.
clx
.
performance
.
dto
.
zjxl
.
dts
;
import
com.clx.performance.enums.DtsOperationTypeEnum
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.util.Map
;
@Data
public
class
DataTransportDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 数据库名称
*/
String
databaseName
;
/**
* 表名
*/
String
tableName
;
/**
* 操作类型
*/
DtsOperationTypeEnum
operationType
;
/**
* 操作记录id 非记录id
*/
String
recordID
;
/**
* 操作时间戳
*/
String
recordTimestamp
;
/**
* 修改之前数据
*/
Map
<
String
,
Object
>
beforeMap
;
/**
* 修改之后数据
*/
Map
<
String
,
Object
>
afterMap
;
}
performance-web/src/main/java/com/clx/performance/listener/OrderChildDtsListener.java
浏览文件 @
a9aff16b
package
com
.
clx
.
performance
.
listener
;
package
com
.
clx
.
performance
.
listener
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.clx.performance.constant.RabbitKeyConstants
;
import
com.clx.performance.constant.RabbitKeyConstants
;
import
com.clx.performance.data.OrderChildData
;
import
com.clx.performance.data.OrderChildData
;
import
com.clx.performance.dto.zjxl.dts.DataTransportDTO
;
import
com.clx.performance.enums.DtsOperationTypeEnum
;
import
com.clx.performance.enums.OrderChildEnum
;
import
com.clx.performance.enums.OrderChildEnum
;
import
com.msl.common.utils.DtsMapConvertUtil
;
import
com.msl.common.utils.DtsMapConvertUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.amqp.core.Message
;
import
org.springframework.amqp.core.Message
;
import
org.springframework.amqp.rabbit.annotation.
*
;
import
org.springframework.amqp.rabbit.annotation.
RabbitListener
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
java.util.Objects
;
import
java.util.Objects
;
...
@@ -24,23 +25,20 @@ public class OrderChildDtsListener {
...
@@ -24,23 +25,20 @@ public class OrderChildDtsListener {
String
msg
=
new
String
(
message
.
getBody
());
String
msg
=
new
String
(
message
.
getBody
());
log
.
info
(
"DTS消息同步开始, database:clx_performance.order_child, msg:{}"
,
msg
);
log
.
info
(
"DTS消息同步开始, database:clx_performance.order_child, msg:{}"
,
msg
);
JSONObject
object
=
JSON
.
parseObject
(
msg
);
DataTransportDTO
dataTransportDTO
=
JSON
.
parseObject
(
msg
,
DataTransportDTO
.
class
);
JSONObject
beforeMap
=
object
.
getJSONObject
(
"beforeMap"
);
OrderChildData
before
=
DtsMapConvertUtil
.
convert
(
dataTransportDTO
.
getBeforeMap
(),
new
OrderChildData
()
);
JSONObject
afterMap
=
object
.
getJSONObject
(
"afterMap"
);
OrderChildData
after
=
DtsMapConvertUtil
.
convert
(
dataTransportDTO
.
getAfterMap
(),
new
OrderChildData
()
);
OrderChildData
before
=
DtsMapConvertUtil
.
convert
(
beforeMap
,
new
OrderChildData
());
if
(
Objects
.
equals
(
DtsOperationTypeEnum
.
INSERT
.
getCode
(),
dataTransportDTO
.
getOperationType
().
getCode
())){
OrderChildData
after
=
DtsMapConvertUtil
.
convert
(
afterMap
,
new
OrderChildData
());
if
(
Objects
.
isNull
(
before
)
&&
Objects
.
nonNull
(
after
)){
//同步after数据
//同步after数据
System
.
out
.
println
(
"新增:"
+
after
);
System
.
out
.
println
(
"新增:"
+
after
);
}
else
if
(
Objects
.
nonNull
(
before
)
&&
Objects
.
nonNull
(
after
)){
}
else
if
(
Objects
.
equals
(
DtsOperationTypeEnum
.
UPDATE
.
getCode
(),
dataTransportDTO
.
getOperationType
().
getCode
()
)){
if
(
OrderChildEnum
.
SYNC_STATUS_lIST
.
contains
(
after
.
getStatus
())
&&
!
Objects
.
equals
(
before
.
getStatus
(),
after
.
getStatus
())){
if
(
OrderChildEnum
.
SYNC_STATUS_lIST
.
contains
(
after
.
getStatus
())
&&
!
Objects
.
equals
(
before
.
getStatus
(),
after
.
getStatus
())){
//同步after数据
//同步after数据
System
.
out
.
println
(
"修改:"
+
after
);
System
.
out
.
println
(
"修改:"
+
after
);
}
}
}
else
if
(
Objects
.
nonNull
(
before
)
&&
Objects
.
isNull
(
after
)){
}
else
if
(
Objects
.
equals
(
DtsOperationTypeEnum
.
UPDATE
.
getCode
(),
dataTransportDTO
.
getOperationType
().
getCode
()
)){
//数据删除
//数据删除
System
.
out
.
println
(
"删除:"
+
before
);
System
.
out
.
println
(
"删除:"
+
before
);
}
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论