新增MySQL和pg数据库的同步

This commit is contained in:
2025-08-27 17:03:38 +08:00
parent 9e05905dba
commit a0b51f56a5

View File

@@ -46,14 +46,46 @@ public class taskDbSync {
private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMdd");
private static final String dsValue = LocalDate.now().format(DATE_FORMATTER);
/**
* 运行全部任务
*/
@GetMapping("/getTaskSyncDbInfo")
public ApiResult<?> jobSyncTask(String token) {
if (vToken.isValidToken(token)) {
public ApiResult<?> jobSyncAllTask(String token) {
if (!vToken.isValidToken(token)) {
return ApiResult.error(401, "无效的访问令牌");
}
List<SyncTask> syncTasks = syncTaskService.list();
// 记录是否有任务失败(仅用于后台日志,不影响接口返回)
List<String> errorMessages = new ArrayList<>();
for (SyncTask task : syncTasks) {
// 提交任务到线程池(异步执行,接口不等待)
execSyncTask(task, errorMessages);
}
// 接口立即返回,不等待任务执行完成
return ApiResult.success();
}
/**
* 运行单个任务
*/
@GetMapping("/getTaskSyncDbByInfo")
public ApiResult<?> jobSyncOneTask(String token, String taskId) {
if (!vToken.isValidToken(token)) {
return ApiResult.error(401, "无效的访问令牌");
}
try {
SyncTask task = syncTaskService.getById(taskId);
// 记录是否有任务失败(仅用于后台日志,不影响接口返回)
List<String> errorMessages = new ArrayList<>();
execSyncTask(task, errorMessages);
return ApiResult.success();
} catch (Exception e) {
return ApiResult.error(101, e.getMessage());
}
}
private void execSyncTask(SyncTask task, List<String> errorMessages) {
hostExecutor.execute(() -> {
try {
// 1. 获取源/目标数据库配置
@@ -76,11 +108,6 @@ public class taskDbSync {
});
System.out.println(errorMessages);
}
// 接口立即返回,不等待任务执行完成
return ApiResult.success();
}
return ApiResult.error();
}
/**
* 同步表数据