Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Quartz调度程序-RAM和JDBC作业存储之间有什么区别_Java_Cron_Scheduled Tasks_Quartz Scheduler - Fatal编程技术网

Java Quartz调度程序-RAM和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

我想在我的应用程序中使用Quartz调度程序框架。我遇到了两种类型的工作商店:

1) 内存作业库

2) JDBC作业存储

我想知道在哪种情况下我必须使用哪家工作商店。他们之间的利弊是什么


任何关于这方面的想法都会对我很有帮助,我对此表示感谢。

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集成。