我使用@Schedule让系统在不同的时间运行任务。但最近,我发现一些任务正在被推迟。例如,有一项任务应该在每天早上5点运行,现在有时在中午甚至更晚的下午运行。有任何想法吗?感谢。
计划程序服务:
@Service
public class DailyReminderTasks extends AbstractTask {
private final static Logger logger = LoggerFactory
.getLogger(DailyReminderTasks.class);
private SendAuditReminderNotificationSerivce sendAuditReminderNotificationSerivce;
@Scheduled(cron = "0 0 5 * * ?")
// run at 5:00 am every day
public void sendAuditReponseReminderLetter() {
try {
sendAuditReminderNotificationSerivce.sendAuditReponseReminder();
} catch (Exception ex) {
logger.error("failed to send reminder: ", ex);
}
}
public SendAuditReminderNotificationSerivce getSendAuditReminderNotificationSerivce() {
return sendAuditReminderNotificationSerivce;
}
@Autowired(required = true)
public void setSendAuditReminderNotificationSerivce(
SendAuditReminderNotificationSerivce sendAuditReminderNotificationSerivce) {
this.sendAuditReminderNotificationSerivce = sendAuditReminderNotificationSerivce;
}
答案 0 :(得分:0)
根据此处提供的信息,最可能的解释是后台线程池处理任务调度没有跟上,因此在任务放入队列的时间和执行时间之间,可以通过许多小时。