我有一个使用集群式Quartz作业的应用程序,并且希望有条件地在本地禁用一些(但不是全部)作业-而不会覆盖数据库中的作业设置。到目前为止,我已经看到了建议完全禁用Quartz调度程序的解决方案,这对我的目的不利(我想运行一些作业)。
在我们的设置中,作业通常在Dev服务器上执行,但是由于开发人员经常在处理代码,因此我们希望能够在访问公共共享数据库的同时在本地执行代码。
问题似乎是Quartz接受了存储在数据库中的作业配置作为福音,而且我似乎无法在本地说“不,请不要运行此作业!”。如果我不实例化作业触发器,Quartz仍将实例化QuartzJobBean并尝试运行它。
我看到了两种解决方案,但不喜欢:
将计划重置为“ 0 0 0 0 0?”。这将禁用作业,但不仅限于本地-它将覆盖数据库中的作业设置,直到另一个(活动)实例将在同一群集中运行,并且计划将再次重置...混乱。
假装要执行。当调用“ executeInternal()”时,跳过执行。这会使Quartz认为该作业已执行,而实际上却没有执行。再次对我有利,但对集群不利。
Quartz是否能够让应用程序说“忽略我!此应用程序实例无法执行该特定任务”,或者就单个任务而言,它实际上是“全有还是全无”?