Java Quartz调度程序-RAM和JDBC作业存储之间有什么区别
我想在我的应用程序中使用Quartz调度程序框架。我遇到了两种类型的工作商店: 1) 内存作业库 2) JDBC作业存储 我想知道在哪种情况下我必须使用哪家工作商店。他们之间的利弊是什么Java Quartz调度程序-RAM和JDBC作业存储之间有什么区别,java,cron,scheduled-tasks,quartz-scheduler,Java,Cron,Scheduled Tasks,Quartz Scheduler,我想在我的应用程序中使用Quartz调度程序框架。我遇到了两种类型的工作商店: 1) 内存作业库 2) JDBC作业存储 我想知道在哪种情况下我必须使用哪家工作商店。他们之间的利弊是什么 任何关于这方面的想法都会对我很有帮助,我对此表示感谢。JDBC job store将有关激发的触发器和作业的信息保存在数据库中,因此: 若应用程序在假定触发时关闭,它不会丢失触发(这取决于所选的失火指令) 您可以对调度程序进行集群,其中每个节点使用相同的数据库 JDBC作业存储相当慢 RAM job sto
任何关于这方面的想法都会对我很有帮助,我对此表示感谢。JDBC job store将有关激发的触发器和作业的信息保存在数据库中,因此:
- 若应用程序在假定触发时关闭,它不会丢失触发(这取决于所选的失火指令)
- 您可以对调度程序进行集群,其中每个节点使用相同的数据库
- JDBC作业存储相当慢
RAM job store仅适用于非集群应用程序,在这些应用程序中,解除触发不是什么大问题。速度也快得多。如果您想在RAM作业存储中使用石英,很可能根本不需要石英。Spring和EJB都提供了运行周期性作业的机制,包括基于时间和基于CRON的作业。RAM作业存储非常快,但非常不稳定-作业在服务器重启后将无法生存 JDBC作业存储稍微慢一点,但由于作业位于持久存储(数据库)中,它们将在重新启动后生存 因此,如果您只有短期的作业计划,并且在服务器重新启动或应用程序重新部署时丢失它们是可以的,那么您可以使用RAM作业存储
如果您需要确保您的作业在关机/重启后仍能生存,那么您应该使用JDBC作业存储。因此,如果我可以将作业详细信息保存在xml文件中,那么我可以使用RAMJobStore。是吗?@Narendra:如果你只是在启动时重新安排所有作业,那么是的。但请记住,如果您的触发器假定每小时运行一次,但您的应用程序已关闭3小时,则RAM store将丢失这3次触发。谢谢您让我知道。现在我明白了。“如果你想用RAM来存储工作存储器,很可能根本就不需要石英。”即使在这种情况下,也可以考虑石英。如果已经用Quartz准备好了调度逻辑,那么有一天将更容易与JDBCQuartz集成。