Quartz.NET и тупики - PullRequest
       37

Quartz.NET и тупики

0 голосов
/ 04 июля 2011

Я играю с последней версией Quartz.NET.Я использую AdoJobStore (с делегатом SqlServer-20) для хранения своих работ.Я создаю новые задания следующим образом:

        JobDetail jobDetail = new JobDetail("myJob", null, typeof(HelloJob));
        jobDetail.JobDataMap["dsa"] = "hello";
        CronTrigger trigger = new CronTrigger("MyTrigger", null, "0/1 * * * * ?");
        trigger.StartTimeUtc = TriggerUtils.GetEvenHourDate(DateTime.UtcNow.AddMonths(-3));
        trigger.Name = "MyTrigger";
        sched.ScheduleJob(jobDetail, trigger);

// другое задание

JobDetail jobDetail = new JobDetail("myJob_Bye", null, typeof(HelloJob));
jobDetail.JobDataMap["dsa"] = "Good Bye";
CronTrigger trigger = new CronTrigger("MyTrigger", null, "0/2 * * * * ?");
trigger.StartTimeUtc = TriggerUtils.GetEvenHourDate(DateTime.UtcNow.AddMonths(-3));
trigger.Name = "MyTrigger2";
sched.ScheduleJob(jobDetail, trigger);

Проблема в том, что когда я запускаю планировщик, он работает в течение некоторого времени (заданий, настроенных выше)и затем выдает SqlException с сообщением «Транзакция (ID процесса 53) была заблокирована для ресурсов блокировки другого процесса и была выбрана в качестве жертвы тупика. Повторите транзакцию.».Ошибка происходит в JobStoreSupport.cs, строка 4217. Похоже, что есть проблема с обработкой блокировки.У любого есть идея, как я могу решить эту проблему.

PS Эта кварцевая сборка - моя сборка, с которой я играю.Я только что изменил имена таблиц и столбцов в AdoConstants.cs и соответствующем файле .sql.

Спасибо за вашу поддержку

1 Ответ

1 голос
/ 07 июля 2011

Я узнал, что случилось.Похоже, при использовании SQL Server не следует использовать тип данных varchar.У Quartz.NET есть некоторые проблемы с этим.Вместо этого переключитесь на nvarchar, и проблема будет исправлена.

...