🔨 自动清理任务使用系统配置.
This commit is contained in:
@@ -22,14 +22,15 @@
|
|||||||
*/
|
*/
|
||||||
package org.dromara.visor.module.asset.task;
|
package org.dromara.visor.module.asset.task;
|
||||||
|
|
||||||
|
import cn.orionsec.kit.lang.utils.Booleans;
|
||||||
import cn.orionsec.kit.lang.utils.time.Dates;
|
import cn.orionsec.kit.lang.utils.time.Dates;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.dromara.visor.common.constant.Const;
|
||||||
import org.dromara.visor.common.utils.LockerUtils;
|
import org.dromara.visor.common.utils.LockerUtils;
|
||||||
import org.dromara.visor.module.asset.define.config.AppExecLogAutoClearConfig;
|
import org.dromara.visor.module.asset.define.config.AppAutoClearConfig;
|
||||||
import org.dromara.visor.module.asset.entity.request.exec.ExecLogClearRequest;
|
import org.dromara.visor.module.asset.entity.request.exec.ExecLogClearRequest;
|
||||||
import org.dromara.visor.module.asset.enums.ExecStatusEnum;
|
import org.dromara.visor.module.asset.enums.ExecStatusEnum;
|
||||||
import org.dromara.visor.module.asset.service.ExecLogService;
|
import org.dromara.visor.module.asset.service.ExecLogService;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
|
||||||
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
@@ -45,16 +46,14 @@ import java.util.Date;
|
|||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Component
|
@Component
|
||||||
@ConditionalOnProperty(value = "app.auto-clear.exec-log.enabled", havingValue = "true")
|
|
||||||
public class ExecLogFileAutoClearTask {
|
public class ExecLogFileAutoClearTask {
|
||||||
|
|
||||||
/**
|
private static final Integer BATCH_SIZE = Const.N_1000;
|
||||||
* 分布式锁名称
|
|
||||||
*/
|
|
||||||
private static final String LOCK_KEY = "clear:exl:lock";
|
private static final String LOCK_KEY = "clear:exl:lock";
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private AppExecLogAutoClearConfig appExecLogAutoClearConfig;
|
private AppAutoClearConfig appAutoClearConfig;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private ExecLogService execLogService;
|
private ExecLogService execLogService;
|
||||||
@@ -65,6 +64,11 @@ public class ExecLogFileAutoClearTask {
|
|||||||
@Scheduled(cron = "0 0 3 * * ?")
|
@Scheduled(cron = "0 0 3 * * ?")
|
||||||
public void clear() {
|
public void clear() {
|
||||||
log.info("ExecLogFileAutoClearTask.clear start");
|
log.info("ExecLogFileAutoClearTask.clear start");
|
||||||
|
// 检查是否开启
|
||||||
|
if (!Booleans.isTrue(appAutoClearConfig.getExecLogEnabled())) {
|
||||||
|
log.info("ExecLogFileAutoClearTask.clear disabled");
|
||||||
|
return;
|
||||||
|
}
|
||||||
// 获取锁并执行
|
// 获取锁并执行
|
||||||
LockerUtils.tryLock(LOCK_KEY, this::doClear);
|
LockerUtils.tryLock(LOCK_KEY, this::doClear);
|
||||||
log.info("ExecLogFileAutoClearTask.clear finish");
|
log.info("ExecLogFileAutoClearTask.clear finish");
|
||||||
@@ -76,13 +80,22 @@ public class ExecLogFileAutoClearTask {
|
|||||||
private void doClear() {
|
private void doClear() {
|
||||||
// 删除的时间区间
|
// 删除的时间区间
|
||||||
Date createLessEq = Dates.stream()
|
Date createLessEq = Dates.stream()
|
||||||
.subDay(appExecLogAutoClearConfig.getKeepPeriod())
|
.subDay(appAutoClearConfig.getExecLogKeepDays())
|
||||||
.date();
|
.date();
|
||||||
// 清理
|
// 清理
|
||||||
ExecLogClearRequest request = new ExecLogClearRequest();
|
for (int i = 0; ; i++) {
|
||||||
request.setCreateTimeLe(createLessEq);
|
log.info("ExecLogFileAutoClearTask.doClear start batch: {}", i + 1);
|
||||||
request.setStatusList(ExecStatusEnum.FINISH_STATUS_LIST);
|
ExecLogClearRequest request = new ExecLogClearRequest();
|
||||||
execLogService.clearExecLog(request);
|
request.setCreateTimeLe(createLessEq);
|
||||||
|
request.setStatusList(ExecStatusEnum.FINISH_STATUS_LIST);
|
||||||
|
request.setLimit(BATCH_SIZE);
|
||||||
|
Integer count = execLogService.clearExecLog(request);
|
||||||
|
log.info("ExecLogFileAutoClearTask.doClear end batch: {}, count: {}", i + 1, count);
|
||||||
|
// 最后一批
|
||||||
|
if (count < BATCH_SIZE) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,14 +22,15 @@
|
|||||||
*/
|
*/
|
||||||
package org.dromara.visor.module.asset.task;
|
package org.dromara.visor.module.asset.task;
|
||||||
|
|
||||||
|
import cn.orionsec.kit.lang.utils.Booleans;
|
||||||
import cn.orionsec.kit.lang.utils.time.Dates;
|
import cn.orionsec.kit.lang.utils.time.Dates;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.dromara.visor.common.constant.Const;
|
||||||
import org.dromara.visor.common.utils.LockerUtils;
|
import org.dromara.visor.common.utils.LockerUtils;
|
||||||
import org.dromara.visor.module.asset.define.config.AppTerminalConnectLogAutoClearConfig;
|
import org.dromara.visor.module.asset.define.config.AppAutoClearConfig;
|
||||||
import org.dromara.visor.module.asset.entity.request.host.TerminalConnectLogClearRequest;
|
import org.dromara.visor.module.asset.entity.request.host.TerminalConnectLogClearRequest;
|
||||||
import org.dromara.visor.module.asset.enums.TerminalConnectStatusEnum;
|
import org.dromara.visor.module.asset.enums.TerminalConnectStatusEnum;
|
||||||
import org.dromara.visor.module.asset.service.TerminalConnectLogService;
|
import org.dromara.visor.module.asset.service.TerminalConnectLogService;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
|
||||||
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
@@ -45,16 +46,14 @@ import java.util.Date;
|
|||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Component
|
@Component
|
||||||
@ConditionalOnProperty(value = "app.auto-clear.terminal-connect-log.enabled", havingValue = "true")
|
|
||||||
public class TerminalConnectLogAutoClearTask {
|
public class TerminalConnectLogAutoClearTask {
|
||||||
|
|
||||||
/**
|
private static final Integer BATCH_SIZE = Const.N_1000;
|
||||||
* 分布式锁名称
|
|
||||||
*/
|
|
||||||
private static final String LOCK_KEY = "clear:tcl:lock";
|
private static final String LOCK_KEY = "clear:tcl:lock";
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private AppTerminalConnectLogAutoClearConfig appTerminalConnectLogAutoClearConfig;
|
private AppAutoClearConfig appAutoClearConfig;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private TerminalConnectLogService terminalConnectLogService;
|
private TerminalConnectLogService terminalConnectLogService;
|
||||||
@@ -65,6 +64,11 @@ public class TerminalConnectLogAutoClearTask {
|
|||||||
@Scheduled(cron = "0 10 3 * * ?")
|
@Scheduled(cron = "0 10 3 * * ?")
|
||||||
public void clear() {
|
public void clear() {
|
||||||
log.info("TerminalConnectLogAutoClearTask.clear start");
|
log.info("TerminalConnectLogAutoClearTask.clear start");
|
||||||
|
// 检查是否开启
|
||||||
|
if (!Booleans.isTrue(appAutoClearConfig.getTerminalLogEnabled())) {
|
||||||
|
log.info("TerminalConnectLogAutoClearTask.clear disabled");
|
||||||
|
return;
|
||||||
|
}
|
||||||
// 获取锁并执行
|
// 获取锁并执行
|
||||||
LockerUtils.tryLock(LOCK_KEY, this::doClear);
|
LockerUtils.tryLock(LOCK_KEY, this::doClear);
|
||||||
log.info("TerminalConnectLogAutoClearTask.clear finish");
|
log.info("TerminalConnectLogAutoClearTask.clear finish");
|
||||||
@@ -76,13 +80,22 @@ public class TerminalConnectLogAutoClearTask {
|
|||||||
private void doClear() {
|
private void doClear() {
|
||||||
// 删除的时间区间
|
// 删除的时间区间
|
||||||
Date createLessEq = Dates.stream()
|
Date createLessEq = Dates.stream()
|
||||||
.subDay(appTerminalConnectLogAutoClearConfig.getKeepPeriod())
|
.subDay(appAutoClearConfig.getTerminalLogKeepDays())
|
||||||
.date();
|
.date();
|
||||||
// 清理
|
// 清理
|
||||||
TerminalConnectLogClearRequest request = new TerminalConnectLogClearRequest();
|
for (int i = 0; ; i++) {
|
||||||
request.setCreateTimeLe(createLessEq);
|
log.info("TerminalConnectLogAutoClearTask.doClear start batch: {}", i + 1);
|
||||||
request.setStatusList(TerminalConnectStatusEnum.FINISH_STATUS_LIST);
|
TerminalConnectLogClearRequest request = new TerminalConnectLogClearRequest();
|
||||||
terminalConnectLogService.clearTerminalConnectLog(request);
|
request.setCreateTimeLe(createLessEq);
|
||||||
|
request.setStatusList(TerminalConnectStatusEnum.FINISH_STATUS_LIST);
|
||||||
|
request.setLimit(BATCH_SIZE);
|
||||||
|
Integer count = terminalConnectLogService.clearTerminalConnectLog(request);
|
||||||
|
log.info("TerminalConnectLogAutoClearTask.doClear end batch: {}, count: {}", i + 1, count);
|
||||||
|
// 最后一批
|
||||||
|
if (count < BATCH_SIZE) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user