我有这个问题:
我正在安排每 10 分钟运行一次的任务。当它运行时,我预计会收到两封来自两次检查失败的电子邮件。
但是,当我编辑我的项目时,开发工具会获取更改并重新启动 spring 应用程序。但问题是:我仍然收到来自正在运行的旧应用程序的电子邮件。
我该怎么做才能正确终止应用程序?恐怕这个问题也会影响到生产环境。
代码:
@Component
public class CheckRunner implements Runnable {
private static final Logger log = LoggerFactory.getLogger(CheckRunner.class);
private static boolean runOnce = true;
private final long DEFAULT_CHECKING_INITIAL = 1L;
private final long DEFAULT_CHECKING_PERIOD = 10L;
@Autowired
public EmailServiceImpl emailService;
/**
* Construct and schedule a CheckRunner
*/
public CheckRunner() {
if(runOnce) {
runOnce = false;
log.info("Starting check runner.");
ScheduledExecutorService exec = Executors.newSingleThreadScheduledExecutor();
exec.scheduleAtFixedRate(this, DEFAULT_CHECKING_INITIAL , DEFAULT_CHECKING_PERIOD, TimeUnit.MINUTES);
}
}
/**
* Run the checks once
*/
@Override
public void run() {
log.info("Checking thread running.");
checks();
}
/**
* Do the checks
*/
private void checks() {
StringBuilder sb = new StringBuilder();
//sb.append("<pre>");
WebServerAvailablityCheck.runAllChecks(sb, emailService);
//sb.append("</pre>");
}
}
DIEA
相关分类