对同一组 Quartz 使用集群和非集群方式的相同石英实例 table
Use same quartz instance both clustered and non clustered way for same set of Quartz table
我有一个要求,我的一些 quartz 工作应该 运行 以集群方式(三个节点中只有一个节点应该 运行 工作)和一些工作 运行 在非集群方式(3 个节点中的所有 3 个节点都应该 运行 作业)。
现在我的问题是我能否在数据源中使用同一组 table 来满足这两个要求。
这是我可以做的事情。
- 2 quartz.properties 一个用于集群实例,一个用于非集群实例。
- 两个集群实例都将在应用程序启动时启动。
- 因此在非集群调度程序下配置的作业将以调度程序名称作为NON_CLST_SCHE保存在作业table中,在相同的table下不同的调度程序名称。
这是使用石英的正确方法吗?我们是否面临任何数据损坏问题?
根据石英文档@ http://www.quartz-scheduler.org/documentation/quartz-2.x/tutorials/tutorial-lesson-11.html 它说
切勿针对任何其他实例 运行 所针对的同一组 table 启动非集群实例。您可能会遇到严重的数据损坏,并且肯定会遇到不稳定的行为。
现在,如果上述解释属实,我的要求的出路是什么。
非常感谢任何帮助,提前致谢!
我认为您的方法很好(假设访问同一数据库的所有非集群调度程序都具有唯一的调度程序名称)。
在我看来,警告指的是当您有多个非集群实例时,这些实例具有与 运行 相同的调度程序名称,针对同一数据库。例如。调度程序只能从 JDBC-Jobstore 查看作业、触发器等,前提是该作业(触发器,...)的关联 SchedulerName 与调度程序匹配。
我有一个要求,我的一些 quartz 工作应该 运行 以集群方式(三个节点中只有一个节点应该 运行 工作)和一些工作 运行 在非集群方式(3 个节点中的所有 3 个节点都应该 运行 作业)。
现在我的问题是我能否在数据源中使用同一组 table 来满足这两个要求。
这是我可以做的事情。
- 2 quartz.properties 一个用于集群实例,一个用于非集群实例。
- 两个集群实例都将在应用程序启动时启动。
- 因此在非集群调度程序下配置的作业将以调度程序名称作为NON_CLST_SCHE保存在作业table中,在相同的table下不同的调度程序名称。
这是使用石英的正确方法吗?我们是否面临任何数据损坏问题?
根据石英文档@ http://www.quartz-scheduler.org/documentation/quartz-2.x/tutorials/tutorial-lesson-11.html 它说 切勿针对任何其他实例 运行 所针对的同一组 table 启动非集群实例。您可能会遇到严重的数据损坏,并且肯定会遇到不稳定的行为。
现在,如果上述解释属实,我的要求的出路是什么。
非常感谢任何帮助,提前致谢!
我认为您的方法很好(假设访问同一数据库的所有非集群调度程序都具有唯一的调度程序名称)。
在我看来,警告指的是当您有多个非集群实例时,这些实例具有与 运行 相同的调度程序名称,针对同一数据库。例如。调度程序只能从 JDBC-Jobstore 查看作业、触发器等,前提是该作业(触发器,...)的关联 SchedulerName 与调度程序匹配。