Compare commits
No commits in common. '3756a61f9e70fe5d2ca2398a3a35ae65e82a569c' and 'd7ee5ad79f6ce792b5290372ce0c089f36680579' have entirely different histories.
3756a61f9e
...
d7ee5ad79f
@ -1,57 +0,0 @@ |
|||||||
package com.alops.system.service.impl; |
|
||||||
|
|
||||||
import com.alops.system.mapper.ScheduleRulesMapper; |
|
||||||
import com.alops.system.service.IAlertSenderService; |
|
||||||
import org.slf4j.Logger; |
|
||||||
import org.slf4j.LoggerFactory; |
|
||||||
import org.springframework.beans.factory.annotation.Autowired; |
|
||||||
import org.springframework.stereotype.Component; |
|
||||||
|
|
||||||
import javax.annotation.PostConstruct; |
|
||||||
@Component |
|
||||||
public class ScheduleShutdownHook { |
|
||||||
private static final Logger log = LoggerFactory.getLogger(ScheduleShutdownHook.class); |
|
||||||
|
|
||||||
@Autowired |
|
||||||
private ScheduleRulesMapper scheduleRulesMapper; |
|
||||||
|
|
||||||
@Autowired |
|
||||||
private IAlertSenderService iAlertSenderService; |
|
||||||
|
|
||||||
private static ScheduleShutdownHook instance; |
|
||||||
|
|
||||||
@PostConstruct |
|
||||||
public void init() { |
|
||||||
instance = this; |
|
||||||
registerShutdownHook(); |
|
||||||
} |
|
||||||
|
|
||||||
private void registerShutdownHook() { |
|
||||||
Runtime.getRuntime().addShutdownHook(new Thread(() -> { |
|
||||||
log.info("检测到应用关闭,开始更新任务状态..."); |
|
||||||
updateInterruptedStatus(); |
|
||||||
})); |
|
||||||
} |
|
||||||
|
|
||||||
private void updateInterruptedStatus() { |
|
||||||
try { |
|
||||||
// 将所有状态为1(执行中)、5(等待中)的任务更新为3(执行失败)
|
|
||||||
int affectedRows = scheduleRulesMapper.updateStatusFrom1And5To3(); |
|
||||||
log.info("成功更新 {} 个任务状态为中断", affectedRows); |
|
||||||
|
|
||||||
// 发送站内信
|
|
||||||
if (affectedRows > 0) { |
|
||||||
iAlertSenderService.sendInternalMessage( |
|
||||||
"系统中断", |
|
||||||
"采集任务被外部中断,已更新" + affectedRows + "个任务状态", |
|
||||||
"2" |
|
||||||
); |
|
||||||
} |
|
||||||
|
|
||||||
} catch (Exception e) { |
|
||||||
log.error("中断处理失败: {}", e.getMessage(), e); |
|
||||||
// 备用方案:直接输出到控制台
|
|
||||||
System.err.println("中断处理失败: " + e.getMessage()); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
Loading…
Reference in new issue