我有 4 个 Quartz Server 实例。所有实例都指向一个 ADO JobStore。我要做的就是让每个 Quartz 实例同时执行相同的作业。
我希望它足够清楚。
我有 4 个 Quartz Server 实例。所有实例都指向一个 ADO JobStore。我要做的就是让每个 Quartz 实例同时执行相同的作业。
我希望它足够清楚。
开箱即用不支持此功能。每当触发器触发时,它只能被一个实例消耗。您可以触发 4 个触发器,但不能保证该作业不会在一个实例上运行两次。
如果您希望每个实例触发一次作业,则必须设置 4 个单独的作业存储。
我所做的(在 Quartz.NET 2.4.1 中)是我有多个相同的调度程序实例,它们仅在调度程序实例名称 ( quartz.scheduler.instanceName
) 上有所不同。他们注册相同的作业和触发器。由于不同的调度程序实例名称,作业和触发器在作业存储中重复(调度程序名称是每个表中主键的一部分JobStoreTX
)。这会导致逻辑上相同的触发器同时在所有调度程序实例上触发。但是,它们实际上是单独的触发器,因此每个触发器都会单独处理失火等。