Quartz Scheduler – RAM和JDBC Job store之间的区别是什么

我想在我的应用程序中使用Quartz Scheduler框架。 我遇到了两种类型的JobStores:

1)RAM Job Store

2)JDBC Job store。

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

对此有任何想法对我很有帮助,我很感激。

JDBC作业存储将有关已触发的触发器和作业的信息保存在数据库中,因此:

  • 如果应用程序停止时触发器被激活(这取决于选择的失火指令),它不会失去激活

  • 您可以对调度程序进行集群,其中每个节点使用相同的数据库

  • JDBC作业存储相当慢

RAM作业存储仅适用于非集群应用程序,其中失去解雇并不是什么大问题。 它也快得多。 如果你想使用带有RAM作业存储的Quartz,很可能你根本就不需要Quartz。 Spring和EJB都提供了运行定期作业的机制,包括时间和基于CRON。

RAM作业存储非常快,但非常易变 – 作业无法在服务器重启后继续存在。

JDBC作业存储稍慢,但由于作业位于持久存储(数据库)中,因此它们将在重新启动后继续存在。

因此,如果您只有短暂的作业计划,并且在服务器重新启动或重新部署应用程序时可以丢失它们,那么您可以使用RAM作业存储。

如果您需要确保您的作业在关闭/重新启动后仍然存在,那么您应该使用JDBC作业存储。