[英]how to set cron expression dynamically with database values for different jobs in spring 4
[英]Cron based jobs, which are in Database
我正在尝试编写一个进程,它从存储在数据库中的一组记录中读取 cron 表达式并运行一个作业(如果该表达式在接下来的一小时内触发,则执行一个程序)。 数据库中带有 cron 表达式的记录可以有不同的触发时间(如星期五或每小时等)。
带有 cron 表达式的表示例。
----------
0 0 12 * * ? , 12Noon, AJOB
----------
0 11 11 11 11 ? , Nov 11, BJOB
----------
0 15 10 * * ? , EveryDay 10: 15, XJOB
----------
用户可以在表中更新此 crons。
设计这种应用程序的最佳方法是什么?
我在这里看到的主要问题如下:假设我每 1 小时运行一次工作,并记录下一个小时内安排的记录并运行我的工作,当应用程序启动时,这看起来一切都很好。 如果应用程序关闭 2 小时,我们可能会错过一些需要在那时触发的工作。
如何编写这种应用程序,记住应用程序可能会失败,但我们不应该在停机期间错过任何 crons?
cron API 也有nextTriggerTime
,但对先前触发时间的支持要少得多。
由于 Akka 是问题标签之一,我假设您正在寻找一些基于 Akka 的解决方案。
对于 JVM 中的类似 cron 的作业调度程序,也许 go 直接与 Quartz 一起使用(如 Ashiq 建议的那样),它是 Java 项目,应该可以直接集成到 aScala 项目中。 另外,看看akka-quartz-scheduler 。 它与 Akka 很好地集成,并提供了 cron 实用程序。
在应用方面:
您可以使用 Quartz,这是一个可以集成到 Java 的作业调度库。 它可以存储和触发 cron 作业和简单的作业。 它还具有失火策略,您可以在错过任何触发器的情况下使用这些策略。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.