public void TestHourlyIntervalGetFireTimeAfter()
        {
            DateTimeOffset startCalendar = DateBuilder.DateOf(9, 30, 17, 1, 6, 2005);


            var yearlyTrigger = new CalendarIntervalTriggerImpl
            {
                StartTimeUtc       = startCalendar,
                RepeatIntervalUnit = IntervalUnit.Hour,
                RepeatInterval     = 100                                                // every 100 hours
            };

            DateTimeOffset targetCalendar = startCalendar.AddHours(400); // jump 400 hours (4 intervals)

            IList <DateTimeOffset> fireTimes = TriggerUtils.ComputeFireTimes(yearlyTrigger, null, 6);
            DateTimeOffset         fifthTime = fireTimes[4]; // get the fifth fire time

            Assert.AreEqual(targetCalendar, fifthTime, "Hour increment result not as expected.");
        }
        public void TestWeeklyIntervalGetFireTimeAfter()
        {
            DateTimeOffset startCalendar = DateBuilder.DateOf(9, 30, 17, 1, 6, 2005);

            var yearlyTrigger = new CalendarIntervalTriggerImpl
            {
                StartTimeUtc       = startCalendar,
                RepeatIntervalUnit = IntervalUnit.Week,
                RepeatInterval     = 6                                              // every six weeks
            };


            DateTimeOffset targetCalendar = startCalendar.AddDays(7 * 6 * 4); // jump 24 weeks (4 intervals)

            IList <DateTimeOffset> fireTimes = TriggerUtils.ComputeFireTimes(yearlyTrigger, null, 7);
            DateTimeOffset         fifthTime = fireTimes[4]; // get the fifth fire time

            Assert.AreEqual(targetCalendar, fifthTime, "Week increment result not as expected.");
        }
Exemple #3
0
        public void TestSecondInterval()
        {
            DateTimeOffset startTime             = DateBuilder.DateOf(0, 0, 0, 1, 1, 2011);
            TimeOfDay      startTimeOfDay        = new TimeOfDay(8, 0, 2);
            TimeOfDay      endTimeOfDay          = new TimeOfDay(13, 30, 0);
            DailyTimeIntervalTriggerImpl trigger = new DailyTimeIntervalTriggerImpl();

            trigger.StartTimeUtc       = startTime;
            trigger.StartTimeOfDayUtc  = startTimeOfDay;
            trigger.EndTimeOfDayUtc    = endTimeOfDay;
            trigger.RepeatIntervalUnit = IntervalUnit.Second;
            trigger.RepeatInterval     = 72;

            IList <DateTimeOffset> fireTimes = TriggerUtils.ComputeFireTimes(trigger, null, 48);

            Assert.AreEqual(48, fireTimes.Count);
            Assert.AreEqual((DateBuilder.DateOf(8, 0, 2, 1, 1, 2011)), fireTimes[0]);
            Assert.AreEqual((DateBuilder.DateOf(8, 56, 26, 1, 1, 2011)), fireTimes[47]);
        }
Exemple #4
0
        public void TestRepeatCount0()
        {
            DateTimeOffset startTime             = DateBuilder.DateOf(0, 0, 0, 1, 1, 2011);
            TimeOfDay      startTimeOfDay        = new TimeOfDay(8, 0, 0);
            TimeOfDay      endTimeOfDay          = new TimeOfDay(11, 0, 0);
            DailyTimeIntervalTriggerImpl trigger = new DailyTimeIntervalTriggerImpl();

            trigger.StartTimeUtc       = startTime;
            trigger.StartTimeOfDayUtc  = startTimeOfDay;
            trigger.EndTimeOfDayUtc    = endTimeOfDay;
            trigger.RepeatIntervalUnit = IntervalUnit.Minute;
            trigger.RepeatInterval     = 72;
            trigger.RepeatCount        = 0;

            IList <DateTimeOffset> fireTimes = TriggerUtils.ComputeFireTimes(trigger, null, 48);

            Assert.AreEqual(1, fireTimes.Count);
            Assert.AreEqual(DateBuilder.DateOf(8, 0, 0, 1, 1, 2011), fireTimes[0]);
        }
Exemple #5
0
        public void TestTimeOfDayWithEndTime2()
        {
            DateTimeOffset startTime             = DateBuilder.DateOf(0, 0, 0, 1, 1, 2011);
            TimeOfDay      startTimeOfDay        = new TimeOfDay(8, 23, 0);
            TimeOfDay      endTimeOfDay          = new TimeOfDay(23, 59, 59); // edge case when endTime is last second of day, which is default too.
            DailyTimeIntervalTriggerImpl trigger = new DailyTimeIntervalTriggerImpl();

            trigger.StartTimeUtc       = startTime;
            trigger.StartTimeOfDayUtc  = startTimeOfDay;
            trigger.EndTimeOfDayUtc    = endTimeOfDay;
            trigger.RepeatIntervalUnit = IntervalUnit.Minute;
            trigger.RepeatInterval     = 60;

            IList <DateTimeOffset> fireTimes = TriggerUtils.ComputeFireTimes(trigger, null, 48);

            Assert.AreEqual(48, fireTimes.Count);
            Assert.AreEqual(DateBuilder.DateOf(8, 23, 0, 1, 1, 2011), fireTimes[0]);
            Assert.AreEqual(DateBuilder.DateOf(23, 23, 0, 3, 1, 2011), fireTimes[47]);
        }
Exemple #6
0
        public string DelayedHttpRequestMessage(string method, Uri destination, Dictionary <string, string> headers, Dictionary <string, string> parameters, TimeSpan delay, int retryCount, bool fireAndForget)
        {
            if (delay == null)
            {
                throw new ArgumentNullException("delay");
            }
            if (delay < TimeSpan.Parse("00:00:00"))
            {
                throw new ArithmeticException("delay must be positive");
            }

            string jobId = _idProducer.GetId();

            using (ILoggingOperation log = _logger.NormalOperation().AddProperty("jobId", jobId))
            {
                log.Wrap(() =>
                {
                    log.Info($"scheduling request {jobId} HttpRequestJob with parameters method={method}, destination={destination}, headaers={headers}, parameters={parameters}, delay={delay}, retryCount={retryCount}, fireAndForget={fireAndForget}");

                    IJobDetail job = JobBuilder.Create <HttpRequestJob>()
                                     .WithIdentity(jobId, ServiceConstants.JobGroupName)
                                     .StoreDurably(false)
                                     .UsingJobData("Method", method)
                                     .UsingJobData("Destination", destination.ToString())
                                     .UsingJobData("HeadersJSON", JsonConvert.SerializeObject(headers))
                                     .UsingJobData("ParametersJSON", JsonConvert.SerializeObject(parameters))
                                     .UsingJobData("RetryCount", retryCount.ToString())
                                     .UsingJobData("FireAndForget", fireAndForget.ToString())
                                     .Build();
                    ITrigger trigger = TriggerBuilder.Create()
                                       .WithIdentity(Guid.NewGuid().ToString(), Service.ServiceConstants.TriggerGroupName)
                                       .StartAt(DateBuilder.FutureDate((int)delay.TotalMilliseconds, IntervalUnit.Millisecond))
                                       .WithSimpleSchedule(p => p.WithMisfireHandlingInstructionFireNow())
                                       .Build();

                    DateTimeOffset t = Global.Scheduler.ScheduleJob(job, trigger);

                    log.Info($"scheduled request {jobId} HttpRequestJob in {t.ToString("HH:mm:ss.fff")}");
                });

                return(jobId);
            }
        }
Exemple #7
0
        //[ValidateDate] // Date validation as filter
        public async Task <IHttpActionResult> GetSchedule(
            int cinemaId,
            int year,
            int month,
            int day)
        {
            if (DateBuilder.TryBuildFrom(year, month, day, out DateTime date) == false)
            {
                return(BadRequest());
            }

            var response = await _mediator.Send(new GetScheduleQuery
            {
                CinemaId = cinemaId,
                Date     = date
            });

            return(Ok(response.Data));
        }
Exemple #8
0
        public async Task ChangeJobStatus(string keyValue, int status)
        {
            var job = await repository.FindEntity(u => u.F_Id == keyValue);

            if (job == null)
            {
                throw new Exception("任务不存在");
            }
            if (status == 0) //停止
            {
                TriggerKey triggerKey = new TriggerKey(job.F_JobName, job.F_JobGroup);
                // 停止触发器
                await _scheduler.PauseTrigger(triggerKey);

                // 移除触发器
                await _scheduler.UnscheduleJob(triggerKey);

                // 删除任务
                await _scheduler.DeleteJob(new JobKey(job.F_JobName, job.F_JobGroup));

                job.F_EnabledMark = false;
                job.F_EndRunTime  = DateTime.Now;
            }
            else  //启动
            {
                DateTimeOffset starRunTime = DateBuilder.NextGivenSecondDate(job.F_StarRunTime, 1);
                DateTimeOffset endRunTime  = DateBuilder.NextGivenSecondDate(DateTime.MaxValue.AddDays(-1), 1);
                IJobDetail     jobdetail   = JobBuilder.Create <JobExecute>().WithIdentity(job.F_JobName, job.F_JobGroup).Build();
                jobdetail.JobDataMap.Add("F_Id", job.F_Id);
                ITrigger trigger = TriggerBuilder.Create()
                                   .StartAt(starRunTime)
                                   .EndAt(endRunTime)
                                   .WithIdentity(job.F_JobName, job.F_JobGroup)
                                   .WithCronSchedule(job.F_CronExpress)
                                   .Build();
                await _scheduler.ScheduleJob(jobdetail, trigger);

                job.F_EnabledMark = true;
                job.F_StarRunTime = DateTime.Now;
            }
            job.Modify(job.F_Id);
            await repository.Update(job);
        }
        public void TestQuartzCalendarExclusion()
        {
            DateTimeOffset startTime = DateBuilder.DateOf(0, 0, 0, 1, 1, 2011);
            var            trigger   = new DailyTimeIntervalTriggerImpl
            {
                StartTimeUtc       = startTime.ToUniversalTime(),
                StartTimeOfDay     = new TimeOfDay(8, 0),
                RepeatIntervalUnit = IntervalUnit.Minute,
                RepeatInterval     = 60
            };

            CronCalendar           cronCal   = new CronCalendar("* * 9-12 * * ?"); // exclude 9-12
            IList <DateTimeOffset> fireTimes = TriggerUtils.ComputeFireTimes(trigger, cronCal, 48);

            Assert.AreEqual(48, fireTimes.Count);
            Assert.AreEqual(DateBuilder.DateOf(8, 0, 0, 1, 1, 2011), fireTimes[0]);
            Assert.AreEqual(DateBuilder.DateOf(13, 0, 0, 1, 1, 2011), fireTimes[1]);
            Assert.AreEqual(DateBuilder.DateOf(23, 0, 0, 4, 1, 2011), fireTimes[47]);
        }
        public JsonResult AddCalendar(CalendarRequestEntity calendarReq)
        {
            try
            {
                var calendar = scheduler.GetCalendar(calendarReq.calendarname);

                //获取calendar
                if (calendar != null)
                {
                    return(Json("已经有同名的calendar添加,请勿添加"));
                }

                if (calendarReq.calendartype == "DailyCalendar")
                {
                    var segment   = calendarReq.selectdate.Split(',');
                    var starttime = DateBuilder.DateOf(Convert.ToInt32(segment[0]), 0, 0).DateTime;
                    var endtime   = DateBuilder.DateOf(Convert.ToInt32(segment[1]), 0, 0).DateTime;

                    DailyCalendar dailyCalendar = new DailyCalendar(starttime, endtime);

                    scheduler.AddCalendar(calendarReq.calendarname, dailyCalendar, true, true);

                    //将这个calendar设置给trigger
                    var tkeys = calendarReq.triggerkey.Split('.');

                    var trigger = scheduler.GetTrigger(new TriggerKey(tkeys[1], tkeys[0]));

                    if (trigger != null)
                    {
                        var newTrigger = trigger.GetTriggerBuilder().ModifiedByCalendar(calendarReq.calendarname).Build();

                        scheduler.RescheduleJob(trigger.Key, newTrigger);
                    }
                }

                return(Json(1));
            }
            catch (Exception ex)
            {
                throw;
            }
        }
Exemple #11
0
        public string DelayedChannelMessage(string channelName, bool broadcast, string message, TimeSpan delay, int retryCount, bool fireAndForget)
        {
            if (delay == null)
            {
                throw new ArgumentNullException("delay");
            }
            if (delay < TimeSpan.Parse("00:00:00"))
            {
                throw new ArithmeticException("delay must be positive");
            }

            string jobId = _idProducer.GetId();

            using (ILoggingOperation log = _logger.NormalOperation().AddProperty("jobId", jobId))
            {
                log.Wrap(() =>
                {
                    log.Info($"scheduling request {jobId} ChannelsMessageJob with parameters channelName={channelName}, broadcast={broadcast}, message={message}, delay={delay}, retryCount={retryCount}, fireAndForget={fireAndForget}");

                    IJobDetail job = JobBuilder.Create <ChannelsMessageJob>()
                                     .WithIdentity(jobId, ServiceConstants.JobGroupName)
                                     .StoreDurably(false)
                                     .UsingJobData("ChannelName", channelName)
                                     .UsingJobData("Broadcast", broadcast)
                                     .UsingJobData("Message", message)
                                     .UsingJobData("RetryCount", retryCount.ToString())
                                     .UsingJobData("FireAndForget", fireAndForget.ToString())
                                     .Build();
                    ITrigger trigger = TriggerBuilder.Create()
                                       .WithIdentity(Guid.NewGuid().ToString(), Service.ServiceConstants.TriggerGroupName)
                                       .StartAt(DateBuilder.FutureDate((int)delay.TotalMilliseconds, IntervalUnit.Millisecond))
                                       .WithSimpleSchedule(p => p.WithMisfireHandlingInstructionFireNow())
                                       .Build();

                    DateTimeOffset t = Global.Scheduler.ScheduleJob(job, trigger);

                    log.Info($"scheduled request {jobId} ChannelsMessageJob in {t.ToString("HH:mm:ss.fff")}");
                });

                return(jobId);
            }
        }
Exemple #12
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);
        }
Exemple #13
0
        public static void StartJob <TJob>(IScheduler scheduler, TimeSpan runInterval, string userId)
            where TJob : IJob
        {
            var jobName = typeof(TJob).FullName;

            // Add Cart Expiring Job
            IJobDetail job = JobBuilder.Create <CartExpireJob>()
                             .WithIdentity("cart" + userId, "carts")
                             .Build();

            //Trigger the job to run after 15 minutes
            ITrigger trigger = TriggerBuilder.Create()
                               .WithIdentity("cartTrigger" + userId, "carts")
                               .StartAt(DateBuilder.FutureDate(runInterval.Minutes, IntervalUnit.Minute))
                               .Build();

            job.JobDataMap.Add("userId", userId);

            scheduler.ScheduleJob(job, trigger);
        }
Exemple #14
0
        protected void ScheduleJobWithDefaultTrigger <T>(string jobGroupName, string jobName) where T : IJob
        {
            JobBuilder builder = JobBuilder.Create <T>()
                                 .WithIdentity(jobName, jobGroupName)
                                 .WithDescription(jobGroupName + "." + jobName);

            IJobDetail job = builder.Build();

            DateTimeOffset runTime = DateBuilder.EvenMinuteDate(DateTimeOffset.UtcNow);

            ITrigger trigger = TriggerBuilder.Create()
                               .WithIdentity(TriggerName, jobGroupName)
                               .StartAt(runTime)
                               .WithSchedule(CalendarIntervalScheduleBuilder.Create().WithIntervalInMinutes(1))
                               .Build();

            _sched.ScheduleJob(job, trigger);

            Context = new SchedulerModel(_sched);
        }
 public void TestEndingAtAfterCount()
 {
     DateTimeOffset startTime = DateBuilder.DateOf(0, 0, 0, 1, 1, 2011);
     IDailyTimeIntervalTrigger trigger = (IDailyTimeIntervalTrigger) TriggerBuilder.Create()
         .WithIdentity("test")
         .WithDailyTimeIntervalSchedule(x =>
             x.WithIntervalInMinutes(15)
                 .StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(8, 0))
                 .EndingDailyAfterCount(12))
         .StartAt(startTime)
         .Build();
     Assert.AreEqual("test", trigger.Key.Name);
     Assert.AreEqual("DEFAULT", trigger.Key.Group);
     Assert.AreEqual(IntervalUnit.Minute, trigger.RepeatIntervalUnit);
     IList<DateTimeOffset> fireTimes = TriggerUtils.ComputeFireTimes((IOperableTrigger) trigger, null, 48);
     Assert.AreEqual(48, fireTimes.Count);
     Assert.AreEqual(DateBuilder.DateOf(8, 0, 0, 1, 1, 2011), fireTimes[0]);
     Assert.AreEqual(DateBuilder.DateOf(10, 45, 0, 4, 1, 2011), fireTimes[47]);
     Assert.AreEqual(new TimeOfDay(10, 45), trigger.EndTimeOfDay);
 }
Exemple #16
0
        /// <summary>
        /// 任务调用的方法
        /// </summary>
        public void Execute(IJobExecutionContext context)
        {
            DateTimeOffset runTime = DateBuilder.EvenMinuteDate(DateTimeOffset.UtcNow);

            int  rowsAffected = 0;
            bool isSucessful  = false;

            System.Data.IDataParameter[] DataParmameter = { new SqlParameter("@Task", "Task"), new SqlParameter("@RunAt", "RunAt") };
            SqlParameter[] parameters = { new SqlParameter("@Task", "Task"), new SqlParameter("@RunAt", "RunAt") };

            Net.DBUtility.DbHelperSQL.RunProcedure("CreateMessagesQueues", out rowsAffected);

            Net.DBUtility.DbHelperSQL.RunProcedure("OAuthsEmpUpDate", parameters, out rowsAffected);
            Console.WriteLine((rowsAffected > -1) + "同步通讯录, JosonJiang  -- !" + runTime);

            Net.DBUtility.DbHelperSQL.RunProcedure("AddressBooksUpDate", DataParmameter, out rowsAffected);
            isSucessful = rowsAffected > -1;

            Console.WriteLine(isSucessful + "同步通讯录, JosonJiang  -- start at 7:30 every day 执行1次 !" + runTime);
        }
Exemple #17
0
        public void TestEndTimeBeforeEndTimeOfDay()
        {
            DateTimeOffset startTime             = DateBuilder.DateOf(0, 0, 0, 1, 1, 2011);
            DateTimeOffset endTime               = DateBuilder.DateOf(16, 0, 0, 2, 1, 2011);
            TimeOfDay      endTimeOfDay          = new TimeOfDay(17, 0, 0);
            DailyTimeIntervalTriggerImpl trigger = new DailyTimeIntervalTriggerImpl();

            trigger.StartTimeUtc       = startTime;
            trigger.EndTimeUtc         = endTime;
            trigger.EndTimeOfDayUtc    = endTimeOfDay;
            trigger.RepeatIntervalUnit = IntervalUnit.Minute;
            trigger.RepeatInterval     = 60;

            IList <DateTimeOffset> fireTimes = TriggerUtils.ComputeFireTimes(trigger, null, 48);

            Assert.AreEqual(35, fireTimes.Count);
            Assert.AreEqual(DateBuilder.DateOf(0, 0, 0, 1, 1, 2011), fireTimes[0]);
            Assert.AreEqual(DateBuilder.DateOf(17, 0, 0, 1, 1, 2011), fireTimes[17]);
            Assert.AreEqual(DateBuilder.DateOf(16, 0, 0, 2, 1, 2011), fireTimes[34]);
        }
Exemple #18
0
        public void TestTimeOfDayWithStartTime()
        {
            DateTimeOffset startTime             = DateBuilder.DateOf(0, 0, 0, 1, 1, 2011);
            TimeOfDay      startTimeOfDay        = new TimeOfDay(8, 0, 0);
            TimeOfDay      endTimeOfDay          = new TimeOfDay(17, 0, 0);
            DailyTimeIntervalTriggerImpl trigger = new DailyTimeIntervalTriggerImpl();

            trigger.StartTimeUtc       = startTime;
            trigger.StartTimeOfDayUtc  = startTimeOfDay;
            trigger.EndTimeOfDayUtc    = endTimeOfDay;
            trigger.RepeatIntervalUnit = IntervalUnit.Minute;
            trigger.RepeatInterval     = 60;

            IList <DateTimeOffset> fireTimes = TriggerUtils.ComputeFireTimes(trigger, null, 48);

            Assert.AreEqual(48, fireTimes.Count);
            Assert.AreEqual(DateBuilder.DateOf(8, 0, 0, 1, 1, 2011), fireTimes[0]);
            Assert.AreEqual(DateBuilder.DateOf(17, 0, 0, 1, 1, 2011), fireTimes[9]); // The 10th hours is the end of day.
            Assert.AreEqual(DateBuilder.DateOf(15, 0, 0, 5, 1, 2011), fireTimes[47]);
        }
Exemple #19
0
        private void StartMonitoring()
        {
            ISchedulerFactory factory = new StdSchedulerFactory();

            _scheduler = factory.GetScheduler();

            _scheduler.Start();

            IJobDetail jobDetail = JobBuilder.Create(typeof(MegaJob))
                                   .WithIdentity("MegaJob")
                                   .Build();

            ITrigger trigger = TriggerBuilder.Create()
                               .WithIdentity("MegaTrigger")
                               .StartAt(DateBuilder.FutureDate(2, IntervalUnit.Minute))
                               .WithSimpleSchedule(b => b.WithIntervalInMinutes(2))
                               .Build();

            _scheduler.ScheduleJob(jobDetail, trigger);
        }
Exemple #20
0
        public void Schedule(MagicBoxOrder magicBox)
        {
            var nexttime = magicBox.ExecutingTime;

            var jobDetail = JobBuilder.Create <MagicBoxOrderJob>()
                            .WithIdentity(magicBox.Id, "group1")
                            .Build();

            var trigger = TriggerBuilder.Create()
                          .WithIdentity(magicBox.Id, "group1")
                          .StartAt(DateBuilder.TodayAt(nexttime.Hour, nexttime.Minute, nexttime.Second))
                          .Build();

            // should group this together in one command. just execute when arrived there

            jobDetail.JobDataMap.Add("queue", orderQueue);
            jobDetail.JobDataMap.Add("orders", magicBox);

            scheduler.ScheduleJob(jobDetail, trigger);
        }
Exemple #21
0
        // 处理 日常采集任务
        public void ArrangeTimedTask()
        {
            lock (this)
            {
                this.CreateSchedule(_dtus.Count);
                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));
                    if (dgp != null)
                    {
                        dtu.DacInterval = dgp.DacInterval;
                    }

                    this.ScheduleJob(dtu, startTime, dtu.DacInterval);
                }
                _schedule.Start();
            }
        }
Exemple #22
0
        public void TestSecondInterval()
        {
            DateTimeOffset startTime      = DateBuilder.DateOf(0, 0, 0, 1, 1, 2011);
            TimeOfDay      startTimeOfDay = new TimeOfDay(8, 0, 2);
            TimeOfDay      endTimeOfDay   = new TimeOfDay(13, 30, 0);
            var            trigger        = new DailyTimeIntervalTriggerImpl
            {
                StartTimeUtc       = startTime.ToUniversalTime(),
                StartTimeOfDay     = startTimeOfDay,
                EndTimeOfDay       = endTimeOfDay,
                RepeatIntervalUnit = IntervalUnit.Second,
                RepeatInterval     = 72
            };

            var fireTimes = TriggerUtils.ComputeFireTimes(trigger, null, 48);

            Assert.AreEqual(48, fireTimes.Count);
            Assert.AreEqual(DateBuilder.DateOf(8, 0, 2, 1, 1, 2011), fireTimes[0]);
            Assert.AreEqual(DateBuilder.DateOf(8, 56, 26, 1, 1, 2011), fireTimes[47]);
        }
Exemple #23
0
        public void TestRepeatCount0()
        {
            DateTimeOffset startTime      = DateBuilder.DateOf(0, 0, 0, 1, 1, 2011);
            TimeOfDay      startTimeOfDay = new TimeOfDay(8, 0, 0);
            TimeOfDay      endTimeOfDay   = new TimeOfDay(11, 0, 0);
            var            trigger        = new DailyTimeIntervalTriggerImpl
            {
                StartTimeUtc       = startTime.ToUniversalTime(),
                StartTimeOfDay     = startTimeOfDay,
                EndTimeOfDay       = endTimeOfDay,
                RepeatIntervalUnit = IntervalUnit.Minute,
                RepeatInterval     = 72,
                RepeatCount        = 0
            };

            var fireTimes = TriggerUtils.ComputeFireTimes(trigger, null, 48);

            Assert.AreEqual(1, fireTimes.Count);
            Assert.AreEqual(DateBuilder.DateOf(8, 0, 0, 1, 1, 2011), fireTimes[0]);
        }
Exemple #24
0
        public void TestNormalExample()
        {
            DateTimeOffset startTime      = DateBuilder.DateOf(0, 0, 0, 1, 1, 2011);
            TimeOfDay      startTimeOfDay = new TimeOfDay(8, 0, 0);
            TimeOfDay      endTimeOfDay   = new TimeOfDay(11, 0, 0);
            var            trigger        = new DailyTimeIntervalTriggerImpl
            {
                StartTimeUtc       = startTime.ToUniversalTime(),
                StartTimeOfDay     = startTimeOfDay,
                EndTimeOfDay       = endTimeOfDay,
                RepeatIntervalUnit = IntervalUnit.Minute,
                RepeatInterval     = 72 // this interval will give three firings per day (8:00, 9:12, and 10:24)
            };

            var fireTimes = TriggerUtils.ComputeFireTimes(trigger, null, 48);

            Assert.AreEqual(48, fireTimes.Count);
            Assert.AreEqual(DateBuilder.DateOf(8, 0, 0, 1, 1, 2011), fireTimes[0]);
            Assert.AreEqual(DateBuilder.DateOf(10, 24, 0, 16, 1, 2011), fireTimes[47]);
        }
Exemple #25
0
        public async Task <string[]> StartFileUploadOss()
        {
            try
            {
                ISchedulerFactory factory = new StdSchedulerFactory();
                //1、通过调度工厂获得调度器
                IScheduler _scheduler = await factory.GetScheduler();

                //2、开启调度器
                await _scheduler.Start();

                //3、创建一个触发器
                //生产环境放开
                DateTimeOffset startTime  = DateBuilder.NextGivenSecondDate(DateTime.Now, 1);
                var            Osstrigger = TriggerBuilder.Create().StartAt(startTime).WithCronSchedule(ConfigHelper.ReadConfigByName("QuartzTime"))
                                            .Build();
                var Failuretrigger = TriggerBuilder.Create().StartAt(startTime).WithCronSchedule(ConfigHelper.ReadConfigByName("QuartzTime"))
                                     .Build();


                //4、创建任务
                var OssDetail = JobBuilder.Create <MyJobLogic>()
                                .WithIdentity("job", "group")
                                .Build();
                var FailurejobDetail = JobBuilder.Create <FailureUploadLogic>()
                                       .WithIdentity("job1", "group")
                                       .Build();

                //5、将触发器和任务器绑定到调度器中
                await _scheduler.ScheduleJob(OssDetail, Osstrigger);

                await _scheduler.ScheduleJob(FailurejobDetail, Failuretrigger);

                return(await Task.FromResult(new string[] { "value1", "value2" }));
            }
            catch (Exception e)
            {
                LogHelper.logError("定时启动异常:" + e.Message);
                return(null);
            }
        }
Exemple #26
0
        /// <summary>
        /// 哑火策略:WithMisfireHandlingInstructionFireNow
        /// 不追赶哑火,如果有触发哑火,立即执行,更新下次执行时间
        /// </summary>
        public static void Fun1()
        {
            var scheduler = StdSchedulerFactory.GetDefaultScheduler();

            scheduler.Start();

            //将键值对传给定时器
            var job = JobBuilder.Create <MyJob>()
                      .Build();

            var trigger = TriggerBuilder.Create()
                          .StartAt(DateBuilder.DateOf(7, 0, 0))
                          .WithSimpleSchedule(m =>
                                              m.WithIntervalInHours(1)
                                              .WithRepeatCount(100)
                                              //如果有触发哑火,立即执行,如果之前定义的是12:00触发,调度时间变成了现在的时间
                                              .WithMisfireHandlingInstructionFireNow()
                                              ).Build();

            scheduler.ScheduleJob(job, trigger);
        }
Exemple #27
0
        public void TestTimeOfDayWithStartTime()
        {
            DateTimeOffset startTime      = DateBuilder.DateOf(0, 0, 0, 1, 1, 2011);
            TimeOfDay      startTimeOfDay = new TimeOfDay(8, 0, 0);
            TimeOfDay      endTimeOfDay   = new TimeOfDay(17, 0, 0);
            var            trigger        = new DailyTimeIntervalTriggerImpl
            {
                StartTimeUtc       = startTime.ToUniversalTime(),
                StartTimeOfDay     = startTimeOfDay,
                EndTimeOfDay       = endTimeOfDay,
                RepeatIntervalUnit = IntervalUnit.Minute,
                RepeatInterval     = 60
            };

            var fireTimes = TriggerUtils.ComputeFireTimes(trigger, null, 48);

            Assert.AreEqual(48, fireTimes.Count);
            Assert.AreEqual(DateBuilder.DateOf(8, 0, 0, 1, 1, 2011), fireTimes[0]);
            Assert.AreEqual(DateBuilder.DateOf(17, 0, 0, 1, 1, 2011), fireTimes[9]); // The 10th hours is the end of day.
            Assert.AreEqual(DateBuilder.DateOf(15, 0, 0, 5, 1, 2011), fireTimes[47]);
        }
Exemple #28
0
        public void TestEndTimeAfterEndTimeOfDay()
        {
            DateTimeOffset startTime    = DateBuilder.DateOf(0, 0, 0, 1, 1, 2011);
            DateTimeOffset endTime      = DateBuilder.DateOf(18, 0, 0, 2, 1, 2011);
            TimeOfDay      endTimeOfDay = new TimeOfDay(17, 0, 0);
            var            trigger      = new DailyTimeIntervalTriggerImpl
            {
                StartTimeUtc       = startTime.ToUniversalTime(),
                EndTimeUtc         = endTime.ToUniversalTime(),
                EndTimeOfDay       = endTimeOfDay,
                RepeatIntervalUnit = IntervalUnit.Minute,
                RepeatInterval     = 60
            };

            var fireTimes = TriggerUtils.ComputeFireTimes(trigger, null, 48);

            Assert.AreEqual(36, fireTimes.Count);
            Assert.AreEqual(DateBuilder.DateOf(0, 0, 0, 1, 1, 2011), fireTimes[0]);
            Assert.AreEqual(DateBuilder.DateOf(17, 0, 0, 1, 1, 2011), fireTimes[17]);
            Assert.AreEqual(DateBuilder.DateOf(17, 0, 0, 2, 1, 2011), fireTimes[35]);
        }
Exemple #29
0
        public override void Schedule(JobDataMap jdm)
        {
            var sched = SF.GetScheduler();

            var job = JobBuilder
                      .Create <T>()
                      .WithIdentity(_jobName, _jobGroupString)
                      .SetJobData(jdm)
                      .Build();

            Logger.LogInformation($"Scheduling fixed time of day job {typeof(T)} to run every day at {_timeOfDay.TotalHours} hours past midnight system time");

            var trigger = TriggerBuilder.Create()
                          .WithIdentity($"{_jobGroupString}{_jobName}FixedTimeOfDay", _jobGroupString)
                          .ForJob(_jobName, _jobGroupString)
                          .StartAt(DateBuilder.FutureDate(30, IntervalUnit.Second))
                          .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(_timeOfDay.Hours, _timeOfDay.Minutes))
                          .Build();

            sched.ScheduleJob(job, trigger);
        }
Exemple #30
0
        private async void ConfigureBackgroudJob(IServiceProvider serviceProvider)
        {
            var jobFactory      = new ScheduledJobFactory(serviceProvider);
            var scedulerFactory = new StdSchedulerFactory();
            var scheduler       = await scedulerFactory.GetScheduler();

            scheduler.JobFactory = jobFactory;
            var startTime = DateBuilder.FutureDate(2, IntervalUnit.Second);
            await scheduler.Start();

            ITrigger checkServerTrigger = TriggerBuilder.Create()
                                          .WithIdentity("ShowsTrigger", "group1")
                                          .StartAt(startTime)
                                          .WithSimpleSchedule(x => x
                                                              .WithIntervalInMinutes(120)
                                                              .RepeatForever())
                                          .Build();

            var scrapJob = JobBuilder.Create <ScheduledJob>().Build();
            await scheduler.ScheduleJob(scrapJob, checkServerTrigger);
        }