public void NextGivenMinuteDateShouldWork()
        {
            DateTimeOffset dto = new DateTimeOffset(new DateTime(2011, 11, 14, 23, 59, 0));
            var            nextGivenMinuteDate = DateBuilder.NextGivenMinuteDate(dto, 0);

            Assert.AreEqual(15, nextGivenMinuteDate.Day);
            Assert.AreEqual(0, nextGivenMinuteDate.Hour);
            Assert.AreEqual(0, nextGivenMinuteDate.Minute);
            Assert.AreEqual(0, nextGivenMinuteDate.Second);
        }
Exemplo n.º 2
0
        protected virtual ITrigger CreateTrigger(string name)
        {
            DateTimeOffset startTime = DateBuilder.NextGivenMinuteDate(null, 2);

            return(TriggerBuilder.Create()
                   .WithIdentity(name, "serviceGroups")
                   //.WithCronSchedule("0 0 1 * * ?")
                   //.WithCronSchedule("0 14 0 * * ?")
                   .StartAt(startTime)
                   .Build());
        }
Exemplo n.º 3
0
 public void AddDtu(DtuNode dtu)
 {
     if (dtu == null)
     {
         return;
     }
     _dtus[dtu.DtuId]         = dtu;
     _dtuCodeMap[dtu.DtuCode] = dtu;
     ScheduleJob(dtu, DateBuilder.NextGivenMinuteDate(null, (int)dtu.DacInterval / 60));
     if (!_schedule.IsStarted)
     {
         _schedule.Start();
     }
 }
Exemplo n.º 4
0
        protected override ITrigger CreateTrigger(string name)
        {
            DateTimeOffset startTime = DateBuilder.NextGivenMinuteDate(null, 1);

            /*
             *           Seconds Minutes Hours Day-of-Month Month Day-of-Week Year (optional field)
             *           the value “L” in the day-of-month field means “the last day of the month” - day 31 for January,
             * day 28 for February on non-leap years
             */
            return(TriggerBuilder.Create()
                   .WithIdentity(name, "serviceGroups")
                   //.WithCronSchedule("0 0 1 L * ?")
                   //.WithCronSchedule("0 12 0 17 * ?")
                   .StartAt(startTime)
                   .Build());
        }
Exemplo n.º 5
0
 // 处理 日常采集任务
 public void ArrangeTimedTask()
 {
     lock (this)
     {
         this.CreateSchedule(_dtus.Count);
         this.InitializeDtuGroups();
         IList <DtuNode> nodes     = _dtus.Values.ToList();
         DateTimeOffset  startTime = DateBuilder.NextGivenMinuteDate(null, 1);
         foreach (DtuNode dtu in nodes)
         {
             DtuGroup dgp = dtuGroups.FirstOrDefault(d => d.Exists(dtu.DtuCode));
             this.ScheduleJob(dtu, startTime, dgp != null ? dgp.DacInterval : dtu.DacInterval);
         }
         _schedule.Start();
     }
 }
        private async Task RetryJob(IJobExecutionContext context)
        {
            var hasRetry = context.MergedJobDataMap.TryGetValue("Retry", out var retry);

            if (hasRetry)
            {
                var trigger = new SimpleTriggerImpl(Guid.NewGuid().ToString());
                trigger.Description = "Retry";
                trigger.RepeatCount = 0;
                trigger.JobKey      = context.JobDetail.Key;
                trigger.JobDataMap.Add("IsRetry", true);
                trigger.StartTimeUtc = DateBuilder.NextGivenMinuteDate(DateTime.Now, (int)retry);

                await context.Scheduler.ScheduleJob(trigger);
            }
        }
Exemplo n.º 7
0
        public static async void Run()
        {
            Debug.WriteLine("Job started to be scheduled");

            // Define a scheduler
            ISchedulerFactory sf        = new StdSchedulerFactory();
            IScheduler        scheduler = await sf.GetScheduler();

            await scheduler.Start();

            IJobDetail job = JobBuilder.Create <CloudStororageJob>()
                             .WithIdentity("Job1", "Group1")
                             .Build();

            //ITrigger trigger = TriggerBuilder.Create()
            //    .WithIdentity("Trigger1", "Group1")
            //    .WithDailyTimeIntervalSchedule
            //      (s =>
            //        s.OnEveryDay()
            //        .StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(9, 53))
            //      )
            //    .Build();

            //await scheduler.ScheduleJob(job, trigger);

            //get a "nice round" time a few seconds in the future...
            DateTimeOffset startTime = DateBuilder.NextGivenMinuteDate(null, 2);

            ISimpleTrigger trigger = (ISimpleTrigger)TriggerBuilder.Create()
                                     .WithIdentity("Trigger1", "Group1")
                                     .StartAt(startTime)
                                     .Build();

            // schedule it to run!
            DateTimeOffset?ft = await scheduler.ScheduleJob(job, trigger);

            Debug.WriteLine("Current time:" + DateTime.Now.ToLongDateString() + " " + DateTime.Now.ToLongTimeString());
            Debug.WriteLine("Current time UTC:" + DateTime.UtcNow.ToLongDateString() + " " + DateTime.UtcNow.ToLongTimeString());
            Debug.WriteLine(job.Key +
                            " will run at: " + ft);

            Debug.WriteLine("Job has been scheduled");
        }
Exemplo n.º 8
0
        public override async Task StartAsync(CancellationToken cancellationToken)
        {
            DateTimeOffset startTime = DateBuilder.NextGivenSecondDate(DateTime.Now, 1);
            DateTimeOffset endTime   = DateBuilder.NextGivenMinuteDate(DateTime.Now, 10);

            IJobDetail job = JobBuilder.Create <LogJob>()
                             .WithIdentity("job", "group")
                             .Build();

            ICronTrigger cronTrigger = (ICronTrigger)TriggerBuilder.Create()
                                       .StartAt(startTime)
                                       .EndAt(endTime)
                                       .WithIdentity("job", "group")
                                       .WithCronSchedule("*/5 * * * * ?")
                                       .Build();

            await _scheduler.ScheduleJob(job, cronTrigger);

            await _scheduler.Start(cancellationToken);
        }
Exemplo n.º 9
0
        public bool ModifyJobTime(DtuNode dtu)
        {
            if (_schedule == null)
            {
                return(false);
            }
            string   triggerKeystr = GetDailyTriggerKey(dtu.DtuId);
            ITrigger trigger       = _schedule.GetTrigger(new TriggerKey(triggerKeystr, JobGroup));

            if (trigger != null)
            {
                _schedule.PauseJob(new JobKey(GetDailyJobKey(dtu.DtuCode), JobGroup));
                TryRemoveJob(dtu.DtuCode);
                _schedule.UnscheduleJob(new TriggerKey(triggerKeystr, JobGroup));
                ScheduleJob(dtu, DateBuilder.NextGivenMinuteDate(null, (int)dtu.DacInterval / 60));


                //IJobDetail job = JobBuilder.Create<DTUDacJob>()
                //    .WithIdentity(string.Format("{0}{1}", DailyJobName, dtu.DtuCode), JobGroup)
                //    .Build();
                //AssignJobInfo(this, TaskType.TIMED, job, new Guid().ToString(), dtu, null, OnTimedTaskFinished);
                //// 调度策略
                //DateTimeOffset startTime = DateBuilder.NextGivenMinuteDate(null, (int) dtu.DacInterval/60); //开始时间.
                //// 重复间隔: dtu.DacInterval (秒);
                //// 重复次数: 无限
                //trigger = (ISimpleTrigger) TriggerBuilder.Create()
                //    .WithIdentity(triggerKeystr, JobGroup)
                //    .WithSimpleSchedule(x => x.WithInterval(new TimeSpan(0, 0, (int) dtu.DacInterval)).RepeatForever())
                //    .StartAt(startTime)
                //    .Build();
                //_schedule.ScheduleJob(job, trigger);
                if (!_schedule.IsStarted)
                {
                    _schedule.Start();
                }
                return(true);
            }
            return(false);
        }