gpt4 book ai didi

azure - 跨多个 Azure 实例同时运行 Quartz.Net 作业

转载 作者:行者123 更新时间:2023-12-03 04:52:22 27 4
gpt4 key购买 nike

我正在组建一个需要扩展计划工作的系统。我正在使用 Quartz.Net 通过 CRON 触发器来安排多个作业。作业的设计确保它们可以安全地跨多个 Azure 角色实例并发执行。

所有可用的信息似乎都是为了确保 Quartz.Net 不会在多台机器上同时执行相同的作业,这是我目前看到的行为。

我实际上需要相反的东西(本质上是一个池,而不是 Quartz.Net 调度程序集群)。例如,我想在 TimeY 跨两个角色实例执行 JobX。我希望两次处决同时发生。我目前只能让 Quartz 执行一个。

该实现当前使用具有两个实例的单个 Web 角色。从长远来看,这将随着许多辅助角色实例也执行相同的计划任务而扩展。每个角色实例都会启动自己的调度程序实例并启动它。它们使用相同的 quartz 配置,如下所示。

<?xml version="1.0" encoding="utf-8" ?>
<quartz>

<add key="quartz.scheduler.instanceId" value="AUTO"/>
<add key="quartz.scheduler.instanceName" value="QuartzScheduler" />

<!-- Configure Thread Pool -->
<add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz" />
<add key="quartz.threadPool.threadCount" value="10" />
<add key="quartz.threadPool.threadPriority" value="Normal" />

<!-- Configure Job Store -->
<add key="quartz.jobStore.clustered" value="true"/>
<add key="quartz.jobStore.misfireThreshold" value="60000" />
<add key="quartz.jobStore.type" value="Quartz.Impl.AdoJobStore.JobStoreTX, Quartz" />
<add key="quartz.jobStore.driverDelegateType" value="Quartz.Impl.AdoJobStore.SqlServerDelegate, Quartz" />
<add key="quartz.jobStore.tablePrefix" value="quartz.QRTZ_" />
<add key="quartz.jobStore.dataSource" value="config" />
<add key="quartz.dataSource.config.provider" value="SqlServer-20" />

<add key="quartz.plugin.xml.type" value="Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin, Quartz" />
<add key="quartz.plugin.xml.fileNames" value="~/QuartzJobs.config" />
</quartz>

如何让 Quartz.Net 在多台机器上执行并发作业?

最佳答案

我已经确认解决方案是使用 RAMJobStore 而不是 ADOJobStore。每个角色实例中运行的每个调度程序将同时执行相同的作业和触发器。这允许 Quartz.Net 调度程序池同时运行相同的作业。

关于azure - 跨多个 Azure 实例同时运行 Quartz.Net 作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16455488/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com