如何在AdoJobStore上的Windows服务启动时运行/触发旧的schdeuled作业

时间:2018-03-07 10:18:51

标签: c# .net-4.5 quartz-scheduler quartz.net quartz

我有一个系统,我正在安排一些工作,并触发在Windows服务中的某个特定时间运行。因为我的Windows服务可以重新启动数量o0f原因我想在他们安排的时候触发已安排的工作,所以我使用AdoJobStore,因为它保留了作业/触发器信息。我在调度程序启动时正在考虑它将加载未完成的作业并将其激活。但它不能 我已经使用以下设置配置了Adojobstore

 <add key="quartz.scheduler.instanceName" value="DBScheduler" />
    <add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz" />
    <add key="quartz.threadPool.threadCount" value="100" />
    <add key="quartz.threadPool.threadPriority" value="2" />
    <add key="quartz.scheduler.dbFailureRetryInterval" value="6000000000" />
    <add key="quartz.jobStore.driverDelegateType" value="Quartz.Impl.AdoJobStore.SqlServerDelegate, Quartz" />
    <add key="quartz.jobStore.tablePrefix" value="QRTZ_" />
    <add key="quartz.jobStore.misfireThreshold" value="600000" />
    <add key="quartz.jobStore.type" value="Quartz.Impl.AdoJobStore.JobStoreTX, Quartz" />
    <add key="quartz.jobStore.dataSource" value="myDS" />
    <add key="quartz.dataSource.myDS.connectionString" value="Server=localhost;Port=3306;database=quartznet;Uid=root;pwd=root;allow user variables=true;CharSet=utf8;" />
    <add key="quartz.dataSource.myDS.provider" value="MySql" />
    <add key="quartz.serializer.type" value="binary" />

schdeuling开始的代码看起来像是在我的Windows启动课程

  StdSchedulerFactory factory = new StdSchedulerFactory();

                MyQuartzScheduler = await factory.GetScheduler();
                await MyQuartzScheduler.Start();

我认为我的日程安排以及谁的条目保存在quartznet数据库中的未来工作将在启动计划后触发,但事实并非如此。 我需要添加任何其他设置或代码吗?

1 个答案:

答案 0 :(得分:0)

看起来像问题是由于一个配置设置

以下配置设置是罪魁祸首

<add key="quartz.jobStore.driverDelegateType" value="Quartz.Impl.AdoJobStore.SqlServerDelegate, Quartz" />

将其更改为

<add key="quartz.jobStore.driverDelegateType" value="Quartz.Impl.AdoJobStore.StdAdoDelegate, Quartz" />

它开始工作了。 某些quartz.net体验者可以确认错误