Как запускать/инициировать старые запланированные задания при запуске службы Windows в AdoJobStore

У меня есть система, в которой я планирую какую-то работу и триггер для запуска в определенное время в службе Windows. Поскольку моя служба Windows может быть перезапущена по ряду причин, я хотел запустить уже запланированные задания в то время, когда они были запланированы, поэтому я использую 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();

Я думал, что будущая работа, у которой у меня есть расписания и записи которых сохранены в базе данных кварца, сработает в это время после запуска расписания, но этого не произошло. Есть ли какие-либо другие настройки или код, которые мне нужно добавить?


person Kamran Shahid    schedule 07.03.2018    source источник


Ответы (1)


Похоже, проблема возникла из-за одной настройки конфигурации

Похоже, что виновником был следующий параметр конфигурации

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

Изменил его на

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

И он начал работать. Может ли кто-нибудь из опытных кварц.нетов подтвердить ошибку?

person Kamran Shahid    schedule 08.03.2018