Почему мой заказ не стреляли в кварцевых служба Windows
У меня есть программа, которая выполняет несколько задач в определенное время каждый день. Я переработал приложение для запуска в качестве задания Quartz с помощью службы Quartz windows. Когда я запускаю службу Quartz Server в службах Windows, я получаю ошибку :
Error 1053 :The service did not respond in a timely fashion
и когда я осматриваю кварцевые бревна в C:\Program файлы (x86)\Quartz.Net\Trace\application.отчет я вам :
15:13:54 [ServerScheduler_QuartzSchedulerThread] DEBUG Quartz.Core.QuartzSchedulerThread - Batch acquisition of 1 triggers 15:13:54 [ServerScheduler_Worker-6] DEBUG Quartz.Core.JobRunShell - Calling Execute on job sampleGroup.sampleJob 15:13:54 [ServerScheduler_Worker-6] INFO Quartz.Server.SampleJob - SampleJob running... 15:13:59 [ServerScheduler_Worker-6] INFO Quartz.Server.SampleJob - SampleJob run finished. 15:13:59 [ServerScheduler_Worker-6] DEBUG Quartz.Core.JobRunShell - Trigger instruction : NoInstruction 15:14:04 [ServerScheduler_QuartzSchedulerThread] DEBUG Quartz.Simpl.SimpleJobFactory - Producing instance of Job 'sampleGroup.sampleJob', class=Quartz.Server.SampleJob 15:14:04 [ServerScheduler_QuartzSchedulerThread] DEBUG Quartz.Core.QuartzSchedulerThread - Batch acquisition of 1 triggers 15:14:04 [ServerScheduler_Worker-7] DEBUG Quartz.Core.JobRunShell - Calling Execute on job sampleGroup.sampleJob 15:14:04 [ServerScheduler_Worker-7] INFO Quartz.Server.SampleJob - SampleJob running... 15:14:09 [ServerScheduler_Worker-7] INFO Quartz.Server.SampleJob - SampleJob run finished. 15:14:09 [ServerScheduler_Worker-7] DEBUG Quartz.Core.JobRunShell - Trigger instruction : NoInstruction
Я следовал руководству из этой статьи здесь последовательно выполняя задания кварца
На данный момент, похоже, сервер Quartz все еще ссылается на встроенное задание, которое поставляется вместе с установкой, и он также не распознает ни одного из внесенных мной изменений.
Что я сделал
1. построил проект библиотеки классов в режиме выпуска и скопировал результирующую библиотеку dll в C:\Program файлы (x86)\Quartz.Чистая как в руководстве здесь https://www.codeproject.com/Articles/1017396/Running-jobs-sequentially-using-Quartz-Net-with-th
2. Обновлено quartz_jobs.xml добавляя записи для моей программы :
<job> <name>JobOne</name> <group>JobOneGroup</group> <description>Sample job for Quartz Server</description> <job-type>CheckListDemo.JobOne, CheckListDemo</job-type> <durable>true</durable> <recover>false</recover> <job-data-map> <entry> <key>NextJobName</key> <value>JobTwo</value> </entry> <trigger> <simple> <name>jobOneTrigger</name> <group>jobOneTriggerGroup</group> <description>Simple trigger to simply fire sample job</description> <job-name>JobOne</job-name> <job-group>JobOneGroup</job-group> <misfire-instruction>SmartPolicy</misfire-instruction> <repeat-count>-1</repeat-count> <repeat-interval>10000</repeat-interval>
3. Добавил пустой конструктор для инициализации работы на всех уроках осуществлению работы
4. создал плагин и добавил его ссылку в quartz.xml как :
# job initialization plugin handles adding a listener for our jobs quartz.plugin.PluginExample.type = CheckListDemo.PluginExample, CheckListDemo
5. добавлен класс плагинов (PluginExample.cs)
6. я добавил классы реализации заданий .Классы просто записывают некоторый текст в именованную папку :
class JobTwo :IJob { public JobTwo() { } public void Execute(IJobExecutionContext context) { Console.WriteLine("Job two started"); string realPath = @"C:\Users\user\Documents\FILES"; string appLog = "JobTWO"; var logPath = realPath + Convert.ToString(appLog) + DateTime.Today.ToString("dd -MM-yy") + ". txt"; if (!File.Exists(logPath)) { File.Create(logPath).Dispose(); } List<string> keys = new List<string>() { "TYPE", "SIGNATURE", "COMPANY", "CLIENT NAME" }; foreach (string key in keys) { using (StreamWriter sw = File.AppendText(logPath)) { sw.WriteLine(key); sw.Flush(); sw.Close(); } } System.Threading.Thread.Sleep(10000); Console.WriteLine("Job TWO finished"); }
7. добавлен прослушиватель заданий с необходимыми записями для моих заданий и триггера я проверил в отдельной консольной программе, что код действительно может записываться в те места, которые я указываю, что оставляет сам сервер Quartz в качестве проблемы.
Что я упускаю?
Требуется ли какая-либо дополнительная конфигурация, чтобы сервер забирал мою dll и указанные задания.
Что я уже пробовал:
Я попробовал запустить службу Quartz нормально без моей библиотеки dll, и она работает отлично.
Но как только я добавляю свою dll и поправки к установочным файлам quartz, у меня возникают проблемы.
F-ES Sitecore
Вы добавили что-нибудь к событию "старт" сервиса?