Планировщик Quartz.net не запускает задания / триггеры после развертывания

INTRODUCTIONI»

м используюQuartz.Net наASP.Net Framework 4, веб-сайт веб-форм. По сути, пользователь должен иметь возможность вручную запускать пакетный скрипт, который асинхронно обрабатывает тысячи записей, хранящихся в базе данных. Пользователь может в любой момент остановиться или сделать паузу, настроить некоторые переменные и, если необходимо, продолжить процесс (оставшиеся записи).

Код готов и работает локально (разработчик, win7, vs2010, sql server express 2008 R2).

Он также был протестирован на локальном сервере (Win Server 2008 R2, SQL Server Express 2008 R2). Он отлично работает в обеих средах, протестирован с предварительно скомпилированным кодом. Проблема в том, что,после развертывания на удаленном сервере (win server 2008 R2), где он на самом деле должен работать (среда размещения, не разделяемая, не кластеризованная), он не работает полностью (подробности см. ниже).Планировщик создается, но триггер, следовательно, задание, нет огонь. (

Замечания: Я знаю, что некоторые из вас предложили бы использовать Quartz в качестве службы Windows, но, несмотря на преимущества этого, я действительно хотел бы выяснить, почему это не так.t работает как встроенное решение, так как оно должно работать нормально, как и локально)

ПОДРОБНОСТИ
Quartz 2.1.2  
Common.Logging 2.1.2  
Common.Logging.NLog 2.0.0  
NLog 2.0.1.2

global.asax

public static ISchedulerFactory SchedulerFactory;
public static IScheduler Scheduler;

void Application_Start(object sender, EventArgs e)
{
    SchedulerFactory = new StdSchedulerFactory();
    Scheduler = SchedulerFactory.GetScheduler();

    // Define a durable job instance (durable jobs can exist without triggers)
    IJobDetail job = JobBuilder.Create()
                                .WithIdentity("MyJob", "MyGroup")
                                .StoreDurably()
                                .Build();

    Scheduler.AddJob(job, false);
    Scheduler.Start();
}
void Application_End(object sender, EventArgs e)
{
    Scheduler.Shutdown(true);
}

process.aspx.cs (нажмите кнопку запуска)

// get records from DB, iterate, process, etc
...

IJobDetail job = ASP.global_asax.Scheduler.GetJobDetail(new JobKey("MyJob", "MyGroup"));
job.JobDataMap.Put("something1", 1);
job.JobDataMap.Put("something2", somevar);

ITrigger trigger = TriggerBuilder.Create()
                    .WithIdentity("MyTrigger", "MyGroup")
                    .StartNow()
                    .WithSimpleSchedule(x => x.WithIntervalInSeconds(5).RepeatForever())
                    .Build();

var triggersSet = new Quartz.Collection.HashSet { trigger };

ASP.global_asax.Scheduler.ScheduleJob(job, triggersSet, true);
LOG OUTPUTлокальный журнал
Default Quartz.NET properties loaded from embedded resource file  
Using default implementation for object serializer  
Using default implementation for ThreadExecutor  
Initialized Scheduler Signaller of type: Quartz.Core.SchedulerSignalerImpl  
Quartz Scheduler v.2.1.2.400 created.  
RAMJobStore initialized.  
Scheduler meta-data: Quartz Scheduler (v2.1.2.400) 'DefaultQuartzScheduler' with instanceId 'NON_CLUSTERED'   Scheduler class: 'Quartz.Core.QuartzScheduler' - running locally.   NOT STARTED.   Currently in standby mode.   Number of jobs executed: 0   Using thread pool 'Quartz.Simpl.SimpleThreadPool' - with 10 threads.   Using job-store 'Quartz.Simpl.RAMJobStore' - which does not support persistence. and is not clustered.  
Quartz scheduler 'DefaultQuartzScheduler' initialized  
Quartz scheduler version: 2.1.2.400  
Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started.  
Batch acquisition of 0 triggers  
Batch acquisition of 0 triggers

Продолжается регистрацияПакетное приобретение 0 триггеров до нажатия кнопки:

Default Quartz.NET properties loaded from embedded resource file  
Batch acquisition of 1 triggers  
Producing instance of Job 'MyGroup.MyJob', class=MyJobClass  
Batch acquisition of 0 triggers  
Calling Execute on job MyGroup.MyJob  
Trigger instruction : NoInstruction  
Batch acquisition of 1 triggers  
Producing instance of Job 'MyGroup.MyJob', class=MyJobClass  
Batch acquisition of 0 triggers  
Calling Execute on job MyGroup.MyJob  
Trigger instruction : NoInstruction  
Batch acquisition of 1 triggers
развернутый журнал
Default Quartz.NET properties loaded from embedded resource file  
Using default implementation for object serializer  
Using default implementation for ThreadExecutor  
Initialized Scheduler Signaller of type: Quartz.Core.SchedulerSignalerImpl  
Quartz Scheduler v.2.1.2.400 created.  
RAMJobStore initialized.  
Scheduler meta-data: Quartz Scheduler (v2.1.2.400) 'DefaultQuartzScheduler' with instanceId 'NON_CLUSTERED' Scheduler class: 'Quartz.Core.QuartzScheduler' - running locally. NOT STARTED. Currently in standby mode. Number of jobs executed: 0 Using thread pool 'Quartz.Simpl.SimpleThreadPool' - with 10 threads. Using job-store 'Quartz.Simpl.RAMJobStore' - which does not support persistence. and is not clustered.   
Quartz scheduler 'DefaultQuartzScheduler' initialized  
Quartz scheduler version: 2.1.2.400  
Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started.

Вот так и остается. Как видите, по сравнению с другим журналомне пытается получить триггеры (линияПакетное приобретение 0 триггеров не появляется вообще). Если вы все равно нажмете кнопку процесса, журнал добавит одну строку:

Default Quartz.NET properties loaded from embedded resource file

Но больше ничего не происходит. Записи не обрабатываются (я знаю, так как каждый раз, когда запись обрабатывается, отмечается в базе данных). Ошибки не возникают, нотриггер не срабатывает, и задание не выполняется. Кроме того, загрузка процессора до 50% и более при нажатии кнопки не снижается, если вы не перейдете в IIS, не остановите и не перезапустите пул приложений., Это потребление процессора не делаетэто происходит на местном уровне.

обновление 1

Изменено использование планировщика дляодиночкав соответствии с предложением LeftyX, но на удаленном сервере все так же.

обновление 2

Я также пытался использоватьADOJobStore (вместоRAMJobStore который я использовал). Теперь он все еще отлично работает на местном уровне; нодо сих пор неt выполнить триггер (следовательно, работу) онлайн, Разница лишь в том, что в режиме онлайн загрузка процессора нене работает до 50%. И теперь я вижу, чтозадание и триггер созданы (Я запрашиваю таблицы и вижу, что эти записи существуют),но никогда не будет казнен.

Ответы на вопрос(4)

Ваш ответ на вопрос