我希望在我的应用程序中使用Quartz调度框架。我发现有两种类型的JobStores:
1)RAM Job Store
2)JDBC Job Store
我想知道在哪种情况下应该使用哪种job store,并且它们之间的优缺点是什么。
如果您有任何想法,对我来说都非常有帮助,我非常感激。
我希望在我的应用程序中使用Quartz调度框架。我发现有两种类型的JobStores:
1)RAM Job Store
2)JDBC Job Store
我想知道在哪种情况下应该使用哪种job store,并且它们之间的优缺点是什么。
如果您有任何想法,对我来说都非常有帮助,我非常感激。
JDBC job store会将触发器和作业的信息保存在数据库中,因此:
如果应用程序在触发器应该触发时宕机(这取决于所选的misfire指令),则不会丢失触发次数
您可以将计划程序设置为集群,其中每个节点都使用相同的数据库
JDBC job store的速度较慢
RAM job store仅适用于非集群应用程序,在这种情况下,丢失一个触发并不是很重要。它也更快。如果您想使用RAM job store来使用Quartz,则大多数情况下您根本不需要Quartz。Spring和EJB都提供了运行周期性作业的机制,包括时间和CRON。
RAM Job Store非常快,但非常不稳定 - 作业在服务器重启后不会存留。
JDBC Job Store稍微慢一些,但由于作业位于持久化存储中(数据库),它们将在重启后存活下来。
因此,如果您只有短暂的作业计划,并且在服务器重新启动或应用程序重新部署时丢失它们是可以接受的,那么可以使用RAM Job Store。
如果您需要确保在关闭/重启后您的作业仍然存在,那么您应该使用JDBC job store。