내 .Net MVC2 응용 프로그램에 임베드하여 Quartz.net을 작동 시키려고합니다. 나는 이것이 이상적이지 않다는 것을 안다. 그러나 나는 그것을 서비스로 옮기기 전에 실행하고 실행하려고 노력하고있다. 내 일자리를 해고 할 수는 없지만 제대로 구성되었다고 생각합니다.Quartz.Net Asp.NET MVC2에 임베드되어 있습니다. 작업을 시작하지 않았습니다.
protected void Application_Start()
{
Quartz.IScheduler scheduler = BuildQuartzScheduler();
...
}
그리고 방법, 바로 튜토리얼에서 가져온 :
private IScheduler BuildQuartzScheduler()
{
// construct a scheduler factory
ISchedulerFactory schedFact = new StdSchedulerFactory();
// get a scheduler
IScheduler sched = schedFact.GetScheduler();
sched.Start();
// construct job info
JobDetail jobDetail = new JobDetail("myJob", null, typeof(QuartzController));
// fire every hour
Trigger trigger = TriggerUtils.MakeMinutelyTrigger();
// start on the next even hour
trigger.StartTimeUtc = TriggerUtils.GetEvenMinuteDate(DateTime.UtcNow);
trigger.Name = "myTrigger";
sched.ScheduleJob(jobDetail, trigger);
return sched;
}
그리고 "컨트롤러"내 Global.asax.cs에서
public class QuartzController : IJob
{
public QuartzController() {
}
public void Execute(JobExecutionContext context) {
throw new NotImplementedException();
}
}
아무것도 이제까지 해고됩니다. 무슨 일이야? 나는 간단한 문법 실수가 틀림 없다고 확신하지만 그것은 나를 미치게 만든다!
실제로 정적 변수로 유지해야하는 스케줄러 팩토리입니다. –
이것은 우리가 볼 수없는 명백한 해답 중 하나입니다. 또한 컨트롤러에 작업을 설정할 필요가 없기 때문에 로직 클래스를 생성 한 다음 IJob 인터페이스를 상속하는 메소드를 호출 할 수도 있습니다. 꽤 유용한 것들 –
@MarkoLahma - 왜 정적으로 유지해야하는 스케줄러가 아닐까요? 일단 공장에서 스케쥴러를 생성하면 스케쥴러가 살아 있어야합니다. Quartz에 대한 후속 호출은 공장이 아닌 스케줄러 객체를 통해 이루어진다. 아니? – Matt