当前位置: 首页 > 知识库问答 >
问题:

Spring-MVC:计划作业未执行

庄高谊
2023-03-14

我正在开发一个 Spring-MVC 应用程序,其中我使用调度来删除不必要的额外内容。不幸的是,我计划的方法没有触发。谁能告诉我我做错了什么。

这是代码:

@Repository
@Transactional
@EnableScheduling
public class NotificationDAOImpl implements NotificationDAO{

    @Override
    @Scheduled(cron = "0 3 3 * * ?")
    public void deleteNotificationsAutoMagically(){
        session=this.sessionFactory.getCurrentSession();
        long now = System.currentTimeMillis();
        long nowMinus1Week = now - (1000 * 60 * 60 * 24 * 3);
        Timestamp nowMinus1WeekAsTimeStamp = new Timestamp(nowMinus1Week);
        Query query = session.createQuery("delete from NoteLock as nl where nl.timestamp < :limit and nl.read=:true");
        query.setParameter("limit", nowMinus1WeekAsTimeStamp);
        query.executeUpdate();
        session.flush();
    }
}

我知道参数名称为1周,但我将在3天后删除它。我刚刚复制了代码…:D任何帮助都很好。谢谢

共有1个答案

蔚弘量
2023-03-14

那个cron表达式看起来像是它会在每个月3号的3点运行。

如果你想每3分钟跑一次,你可以使用下面的表达。

0 0/3 * 1/1 * ?*

您可以使用 cronmaker 生成表达式

要验证您创建的cron表达式是否正确,请访问此页面

 类似资料:
  • 我需要两个 cron 工作,我真的不确定我做得是否正确。一个骗局作业应该在每 01.01.xxx 01:00 运行一次,另一个应该在每晚 01:00 运行。 这是正确的表达吗?

  • 我希望每天早上9点完成一项任务。我得到了一些有趣的结果。目前我的工作是这样的: 这是怎么回事?这是正确的表达吗?

  • 问题内容: 我正在使用Quartz Job执行特定任务。 我也在我的Main应用程序类中安排它的执行,而我试图完成的工作是不允许同时执行此作业的实例。 因此,调度程序仅应在其先前实例完成后才执行作业。 这是我的工作班级: 因此,在应用程序的主类中,我正在启动调度程序: 如果另一个实例仍在运行,我想阻止调度程序启动第二个MainJob实例… 问题答案: 只需在Job类顶部使用Annotation。

  • 我在应用程序属性文件中设置了一个cron表达式,如下所示: 注释如下, 但是当运行应用程序时,我得到了以下异常。 原因:java.lang.IllegalStateException:遇到无效@计划的方法'报告作业':对于输入字符串:"1W"。 Spring Boot似乎不接受cron表达式中定义的。知道为什么吗?

  • Spring使用Quartz的顺序作业计划 我有三个或更多的工作,这取决于他们各自以前的工作,他们将按顺序运行。如果完成运行,当完成运行。如果在上一个中发生任何错误,则不会激发下一个触发的作业。我试图了解工作链使用石英,但无法通过它。 作业顺序如下所示 提前谢了。

  • 我在Openshift环境中运行SCDF。我正在安排一个Spring批处理作业每5分钟运行一次。有时作业可能运行超过5分钟。在这种情况下,是否可以保留下一个计划的作业执行,直到上一个完成其执行? 我们不想改变作业执行的频率和间隔。 谢了。