//defines job and triggers and starts the job by calling the execute public async void RecallNoXml() { try { //create the scheduler for start the job ISchedulerFactory schedulerFactory = new StdSchedulerFactory(); IScheduler scheduler = await schedulerFactory.GetScheduler(); //start the job await scheduler.Start(); //define the job IJobDetail job = new JobDetailImpl( "JobQueue", null, typeof(JobQueue)); //define the trigger ITrigger trigger = new Quartz.Impl.Triggers.SimpleTriggerImpl( "trigger", DateTime.UtcNow, null, Quartz.Impl.Triggers.SimpleTriggerImpl.RepeatIndefinitely, new TimeSpan(0, 0, 10)); await scheduler.ScheduleJob(job, trigger); } catch (Exception e) { log.Error($"Error{System.Environment.NewLine}{e.Message}"); } }
public bool StartJob(string jobName, IJobExecutor handler, string cron) { lock (joblocker) { var existjob = Jobs.Exists(x => x.JobName == jobName); if (existjob) { return(false); } //string InnerJobId = Guid.NewGuid().ToString(); JobDetailImpl jobdetail = new JobDetailImpl(jobName, typeof(RuanalInnerJob)); jobdetail.Description = "内部调度任务"; Quartz.ITrigger triger = null; var isrunonce = cron.ToLower() == "runonce"; if (isrunonce) { var ttriger = new Quartz.Impl.Triggers.SimpleTriggerImpl("trigger_" + jobName); ttriger.RepeatCount = 0; ttriger.RepeatInterval = TimeSpan.FromSeconds(1); triger = ttriger; } else { var ttriger = new Quartz.Impl.Triggers.CronTriggerImpl("trigger_" + jobName); ttriger.CronExpressionString = cron; triger = ttriger; } JobContext jobitem = new JobContext() { // InnerJobId = InnerJobId, IsRunOnce = isrunonce, JobName = jobName, JobDetail = jobdetail, LastRunTime = null, OnInvoke = handler }; jobitem.Triggers.Add(triger); Jobs.Add(jobitem); Scheduler.ScheduleJob(jobdetail, triger); return(true); } }
public void TestAfterPropertiesSet_Trigger_TriggerExists() { InitForAfterPropertiesSetTest(); const string TRIGGER_NAME = "trigName"; const string TRIGGER_GROUP = "trigGroup"; SimpleTrigger trigger = new SimpleTrigger(TRIGGER_NAME, TRIGGER_GROUP); factory.Triggers = new Trigger[] { trigger }; #if QUARTZ_2_0 TestSchedulerFactory.MockScheduler.Stub(x => x.GetTrigger(new TriggerKey(TRIGGER_NAME, TRIGGER_GROUP))).Return(trigger); #else TestSchedulerFactory.MockScheduler.Stub(x => x.GetTrigger(TRIGGER_NAME, TRIGGER_GROUP)).Return(trigger); #endif factory.AfterPropertiesSet(); }
public void TestAfterPropertiesSet_Trigger_TriggerDoesntExist() { InitForAfterPropertiesSetTest(); const string TRIGGER_NAME = "trigName"; const string TRIGGER_GROUP = "trigGroup"; SimpleTrigger trigger = new SimpleTrigger(TRIGGER_NAME, TRIGGER_GROUP); factory.Triggers = new Trigger[] { trigger }; factory.AfterPropertiesSet(); TestSchedulerFactory.MockScheduler.AssertWasCalled(x => x.ScheduleJob(trigger)); }
private static TriggerFiredBundle ConstructMinimalTriggerFiredBundle() { JobDetail jd = new JobDetail("jobName", "jobGroup", typeof(NoOpJob)); SimpleTrigger trigger = new SimpleTrigger("triggerName", "triggerGroup"); TriggerFiredBundle retValue = new TriggerFiredBundle(jd, trigger, null, false, null, null, null, null); return retValue; }
public void TestSchedulerFactoryObjectWithPlainQuartzObjects() { IJobFactory jobFactory = new AdaptableJobFactory(); TestObject tb = new TestObject("tb", 99); JobDetail jobDetail0 = new JobDetail(); jobDetail0.JobType = typeof (IJob); jobDetail0.Name = ("myJob0"); jobDetail0.Group = (SchedulerConstants.DefaultGroup); jobDetail0.JobDataMap.Add("testObject", tb); Assert.AreEqual(tb, jobDetail0.JobDataMap.Get("testObject")); CronTrigger trigger0 = new CronTrigger(); trigger0.Name = ("myTrigger0"); trigger0.Group = SchedulerConstants.DefaultGroup; trigger0.JobName = "myJob0"; trigger0.JobGroup = SchedulerConstants.DefaultGroup; trigger0.StartTimeUtc = (DateTime.UtcNow); trigger0.CronExpressionString = ("0/1 * * * * ?"); TestMethodInvokingTask task1 = new TestMethodInvokingTask(); MethodInvokingJobDetailFactoryObject mijdfb = new MethodInvokingJobDetailFactoryObject(); mijdfb.Name = ("myJob1"); mijdfb.Group = (SchedulerConstants.DefaultGroup); mijdfb.TargetObject = (task1); mijdfb.TargetMethod = ("doSomething"); mijdfb.AfterPropertiesSet(); JobDetail jobDetail1 = (JobDetail) mijdfb.GetObject(); SimpleTrigger trigger1 = new SimpleTrigger(); trigger1.Name = "myTrigger1"; trigger1.Group = SchedulerConstants.DefaultGroup; trigger1.JobName = "myJob1"; trigger1.JobGroup = SchedulerConstants.DefaultGroup; trigger1.StartTimeUtc = (DateTime.UtcNow); trigger1.RepeatCount = (SimpleTrigger.RepeatIndefinitely); trigger1.RepeatInterval = TimeSpan.FromMilliseconds(20); IScheduler scheduler = MockRepository.GenerateMock<IScheduler>(); SchedulerFactoryObject schedulerFactoryObject = new TestSchedulerFactoryObject(scheduler); schedulerFactoryObject.JobFactory = (jobFactory); schedulerFactoryObject.JobDetails = (new JobDetail[] {jobDetail0, jobDetail1}); schedulerFactoryObject.Triggers = (new Trigger[] {trigger0, trigger1}); try { schedulerFactoryObject.AfterPropertiesSet(); schedulerFactoryObject.Start(); } finally { schedulerFactoryObject.Dispose(); } scheduler.AssertWasCalled(x => x.JobFactory = jobFactory); scheduler.AssertWasCalled(x => x.AddJob(jobDetail0, true)); scheduler.AssertWasCalled(x => x.AddJob(jobDetail1, true)); #if QUARTZ_2_0 scheduler.AssertWasCalled(x => x.GetJobDetail(new JobKey("myJob0", SchedulerConstants.DefaultGroup))); scheduler.AssertWasCalled(x => x.GetJobDetail(new JobKey("myJob1", SchedulerConstants.DefaultGroup))); scheduler.AssertWasCalled(x => x.GetTrigger(new TriggerKey("myTrigger0", SchedulerConstants.DefaultGroup))); scheduler.AssertWasCalled(x => x.GetTrigger(new TriggerKey("myTrigger1", SchedulerConstants.DefaultGroup))); #else scheduler.AssertWasCalled(x => x.GetJobDetail("myJob0", SchedulerConstants.DefaultGroup)); scheduler.AssertWasCalled(x => x.GetJobDetail("myJob1", SchedulerConstants.DefaultGroup)); scheduler.AssertWasCalled(x => x.GetTrigger("myTrigger0", SchedulerConstants.DefaultGroup)); scheduler.AssertWasCalled(x => x.GetTrigger("myTrigger1", SchedulerConstants.DefaultGroup)); #endif }
public void TestCreateJobInstance_SimpleDefaults() { Trigger trigger = new SimpleTrigger(); TriggerFiredBundle bundle = TestUtil.CreateMinimalFiredBundleWithTypedJobDetail(typeof (NoOpJob), trigger); #if QUARTZ_2_0 IJob job = factory.NewJob(bundle, null); #else IJob job = factory.NewJob(bundle); #endif Assert.IsNotNull(job, "Created job was null"); }
public void TestCreateJobInstance_SchedulerContextGiven() { Trigger trigger = new SimpleTrigger(); TriggerFiredBundle bundle = TestUtil.CreateMinimalFiredBundleWithTypedJobDetail(typeof(InjectableJob), trigger); #if QUARTZ_2_0 IDictionary<string, object> items = new Dictionary<string, object>(); items["foo"] = "bar"; items["number"] = 123; factory.SchedulerContext = new SchedulerContext(items); InjectableJob job = (InjectableJob)factory.NewJob(bundle, null); #else IDictionary items = new Hashtable(); items["foo"] = "bar"; items["number"] = 123; factory.SchedulerContext = new SchedulerContext(items); InjectableJob job = (InjectableJob) factory.NewJob(bundle); #endif Assert.IsNotNull(job, "Created job was null"); Assert.AreEqual("bar", job.Foo, "string injection failed"); Assert.AreEqual(123, job.Number, "integer injection failed"); }
public void TestCreateJobInstance_IgnoredProperties() { factory.IgnoredUnknownProperties = new string[] {"foo", "baz"}; Trigger trigger = new SimpleTrigger(); trigger.JobDataMap["foo"] = "should not be injected"; trigger.JobDataMap["number"] = 123; TriggerFiredBundle bundle = TestUtil.CreateMinimalFiredBundleWithTypedJobDetail(typeof(InjectableJob), trigger); #if QUARTZ_2_0 InjectableJob job = (InjectableJob)factory.NewJob(bundle, null); #else InjectableJob job = (InjectableJob)factory.NewJob(bundle); #endif Assert.IsNotNull(job, "Created job was null"); Assert.AreEqual(123, job.Number, "integer injection failed"); Assert.IsNull(job.Foo, "foo was injected when it was not supposed to "); }