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