Планировщик Quarts.net не может добавить таблицу SQL заданий, когда JobDataMap добавляется в задание во время установки - PullRequest
0 голосов
/ 06 ноября 2019

У меня проблема с планированием заданий, содержащих JobMapData. Я использую SQL Server для сохранения данных задания / триггера.

Когда я планирую свои задания без добавления JobMapData, они отображаются в базе данных, как и ожидалось, и мое приложение отлично выполняет задания. Однако когда я добавляю необходимые JobMapData для задания, в таблицы не включаются никакие триггеры / данные задания.

[My Quartz Config]

var schedulerConfig = new NameValueCollection
{
    { "quartz.scheduler.instanceName", "TaskScheduler" },
    { "quartz.scheduler.instanceId", "TaskScheduler" },
    { "quartz.threadPool.type", "Quartz.Simpl.SimpleThreadPool, Quartz" },
    { "quartz.threadPool.threadCount", "3"},
    { "quartz.threadPool.threadPriority", "Normal" },
    { "quartz.jobStore.misfireThreshold", "60000"},
    { "quartz.jobStore.type", "Quartz.Impl.AdoJobStore.JobStoreTX, Quartz" },
    { "quartz.jobStore.useProperties", "true" },
    { "quartz.jobStore.dataSource", "default" },
    { "quartz.jobStore.tablePrefix", "_QRTZ_" },
    { "quartz.jobStore.driverDelegateType", "Quartz.Impl.AdoJobStore.SqlServerDelegate, Quartz"},
    { "quartz.dataSource.default.connectionString", "Server=XXXXXXXXXXX; Database=TaskScheduling;Trusted_Connection=True;MultipleActiveResultSets=true" },
    { "quartz.dataSource.default.provider", "SqlServer" },
    { "quartz.serializer.type", "binary"},
};

[Настройка задания]

IJobDetail job = JobBuilder.Create<SendCyrstalReportJob>()
                    .WithIdentity("SendWorkCenterLoadSummary", "TaskSchedulerService")
                    .WithDescription("Sends the WorkCenterLoadSummary report to a list of email recipients")
                    .UsingJobData("parameters", "MailCrystalReportAsExcel -reportName \\\\fs5\\Reports\\LoadSummary6WeekForecast.rpt -recipients mailrecipient@addy.com")
                    .Build();

ITrigger trigger = TriggerBuilder.Create()
                    .WithIdentity("WorkCenterLoadSummaryTrigger", "TaskSchedulerService")
                    .WithCronSchedule("0/10 * * * * ?")
                    .ForJob("SendWorkCenterLoadSummary", "TaskSchedulerService")
                    .UsingJobData("command", "c:\\CommandConsole\\ecc.exe")
                    .Build();

_scheduler.ScheduleJob(job, trigger);
_scheduler.ListenerManager.AddJobListener(_jobListener);

Приведенный код не приведет к добавлению данных о задании / триггере в базу данных. Если я закомментирую UsingJobData из и , то определение задания и определение триггера приведут к планированию задания и его последующему выполнению, как и ожидалось.

Не было выдано ошибок, ничего не сообщалосьфайлы журналов или окно консоли, указывающее на проблему, просто нет данных, поступающих в базу данных.

Есть идеи, что может происходить? : -)

...