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

Spring调度程序Cron作业

归浩博
2023-03-14

我有两个要求。

  1. 每周一触发作业

对于第一个要求,我尝试了@Scheduled(cron=“0 0 12?*MON”)@Scheduled(cron=“0 0 12?*2”)。他们俩都不工作。该函数未被调用。

对于第二个要求,我尝试了@Scheduled(cron=“0 12?1/1 MON#1”)@Scheduled(cron=“0 12?1/1 2#1”)。我得到下面的错误。

原因:java。lang.IllegalStateException:遇到无效的@Scheduled方法“monthlyData”:用于输入字符串:“2#1”。

共有2个答案

公西宏峻
2023-03-14

希望这对你有帮助

对于每周一-(0 0 12?*MON)[sec min hour dayOfmonth month dayofweek]

每个月的第一个星期一-(0 0 12?*2#1)-它将在每个月的第一个星期一12点触发事件

闽哲
2023-03-14

这两个cron表达式都是有效的,都代表了您编写的内容。现在,通过XML配置,以下示例似乎适合我:

<bean id="cronTriggerJobFirstMonday"
            class="org.springframework.scheduling.quartz.CronTriggerBean">
    <property name="jobDetail" ref="YourQuartzJobBean" />
    <property name="cronExpression" value="0 0 12 ? * MON#1 *" />
</bean>

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers">
        <list>
            <ref bean="cronTriggerJobFirstMonday" />
        </list>
    </property>
</bean>
 类似资料:
  • 我正在使用和以及集群模式下的oracle db,我正在使用所有quartz api,因为我面临spring支持的quartz api的问题。 我的作业类中有一些依赖项没有初始化,我在调度程序上下文中传递了这些依赖项,然后它就开始工作了。 问题是我的cron表达式是每5分钟运行一次

  • 是否有任何专家在使用spingdge调度程序时遇到问题? 我试着设置它在工作日的下午2点到晚上10点之间每小时运行15分钟,但是好像是按分钟触发的,这是因为我的cron出错了还是我应该做smthg来控制它? 通过springboot-web-started在linux服务器上运行 版本

  • 在我的应用程序中,我有一个Spring线程调度程序池,用于在未来的特定时间运行不同的Cron作业。我有足够日志记录的Cron作业来告诉它做了什么。我注意到有时这些作业没有在应该运行的时间执行。我已经验证了这些作业是添加到调度程序队列中的。所以我怀疑如果我的调度程序池已满并且没有任何空闲线程,那么它就无法在特定时间调度作业。当Spring在池中找到任何空闲线程时,它不应该运行这种延迟的作业吗?或者它

  • 我正在运行一个spring boot计划的进程,需要5-10秒才能完成。完成后,60秒后流程再次开始(注意,我使用的不是fixedRate): 现在,我想限制它每分钟运行周一至周五上午9点到下午5点。我可以用 这里的问题是,这与fixedRate类似--进程每60秒触发一次,而不考虑完成上一次运行所花费的时间。 有没有办法把这两种技术结合起来?

  • 我已经在Heroku Free Tier上部署了Spring Boot Rest Api后端。该应用程序有一个计划的方法,应该每天下午12点运行一次。我知道Heroku自由层Dyno在30分钟不活动后睡觉。因此,除非dyno处于活动状态,否则特定的方法不会运行。我已经确认,当Dyno处于活动状态时,该方法按照它应该的方式运行。我做了一点研究,在这里找到了一些相关的答案: https://stack

  • 我有两个方法可以与spring调度器定期运行,一个是@schedule(fixedrate=300000)--每5分钟运行一次,另一个是@schedule(cron=“0 0 0 2**?)--每天凌晨2点运行。我们没有使用线程池的taskScheduler,所以它只使用一个线程,所以没有重叠。 我观察到的是,当5分钟的作业花费更多的时间(比如>30分钟)时,它不允许其他@scheduled作业运