我想在我的应用程序中使用 Quartz Scheduler 框架。我遇到了两种类型的 JobStore:
1) RAM 作业存储
2) JDBC 作业存储。
我想知道在哪种情况下我必须使用哪个工作商店。以及它们之间的优缺点是什么。
对此的任何想法都对我很有帮助,我很感激。
我想在我的应用程序中使用 Quartz Scheduler 框架。我遇到了两种类型的 JobStore:
1) RAM 作业存储
2) JDBC 作业存储。
我想知道在哪种情况下我必须使用哪个工作商店。以及它们之间的优缺点是什么。
对此的任何想法都对我很有帮助,我很感激。
JDBC 作业存储将有关触发的触发器和作业的信息保存在数据库中,因此:
如果应用程序在触发器被触发时关闭,它不会丢失触发(这取决于选择的失火指令)
您可以集群您的调度程序,其中每个节点使用相同的数据库
JDBC 作业存储相当慢
RAM 作业存储仅适用于丢失触发无关紧要的非集群应用程序。它也快得多。如果你想使用带有 RAM 作业存储的 Quartz,很可能你根本不需要 Quartz。Spring 和 EJB 都提供了运行基于时间和 CRON 的周期性作业的机制。
RAM 作业存储非常快,但非常不稳定 - 作业无法在服务器重新启动后继续存在。
JDBC 作业存储有点慢,但由于作业位于持久存储(数据库)中,因此它们将在重新启动后继续存在。
因此,如果您只有短暂的作业计划,并且在服务器重新启动或重新部署应用程序时丢失它们是可以的,那么您可以使用 RAM 作业存储。
如果您需要确保您的作业在关闭/重新启动后仍然存在,那么您应该使用 JDBC 作业存储。