Esempio n. 1
0
        public async Task <IActionResult> CreateCallback([FromQuery] string cron, [FromQuery] string callback = "http%3A%2F%2Flocalhost%3A5000%2Fscheduler%2Fcallback")
        {
            Logger.LogInformation($"{nameof(cron)}: [{cron}], {nameof(callback)}: [{callback}]");
            if (cron == null)
            {
                return(new JsonResult(new { Code = 400, Message = "CRON表达式不能为空" }));
            }
            // 调度器
            if (Scheduler == null)
            {
                Scheduler = await SchedulerFactory.GetScheduler();
            }
            await Scheduler.Start();

            // 触发器
            var trigger = TriggerBuilder.Create()
                          .WithCronSchedule(cron)
                          .Build();

            // 任务器
            var jobDeatail = JobBuilder.Create <CallbackJob>()
                             .UsingJobData(nameof(callback), callback)
                             .Build();

            await Scheduler.ScheduleJob(jobDeatail, trigger);

            return(new JsonResult(new
            {
                Code = 200,
                Message = "定时回调任务创建成功"
            }));
        }
        public void Start()
        {
            Trace.WriteLine("Service scheduler starting...");
            try
            {
                Scheduler = SchedulerFactory.GetScheduler();

                Trace.WriteLine("Firing triggers...");
                Scheduler.Start();

                Trace.WriteLine("Schedule Jobs");
                foreach (var job in Jobs)
                {
                    var jobDetail = JobBuilder.Create(job.GetType())
                                    .WithIdentity(job.GetType().Name, "group1")
                                    .Build();

                    var tb = TriggerBuilder.Create()
                             .WithIdentity(job.GetType().Name, "group1")
                             .StartNow();
                    var trigger = job.GetSchedule(tb).Build();

                    Scheduler.ScheduleJob(jobDetail, trigger);
                }

                Trace.WriteLine("Do stuff");
            }
            catch (TaskSchedulerException se)
            {
                Trace.WriteLine("Service failed to start");
                Trace.WriteLine(se);
            }
        }
Esempio n. 3
0
        public async Task <bool> Start()
        {
            var jobDatas = await JobHelper.GetActiveJobListAsync();

            IScheduler scheduler = await SchedulerFactory.GetScheduler();

            scheduler.JobFactory = IOCFactory;


            foreach (var jobData in jobDatas)
            {
                try
                {
                    DateTime startTime = jobData.StartTime ?? DateTime.Now;
                    DateTime?endTime   = jobData.EndTime;

                    ITrigger   trigger   = JobHelper.CreateTrigger(jobData.JobName, jobData.JobGroup, startTime, jobData.CronExpression, endTime);
                    IJobDetail jobDetail = JobHelper.CreateDetail <JobExecute>(jobData.JobName, jobData.JobGroup, jobData.DeepCloneByXML());

                    await scheduler.ScheduleJob(jobDetail, trigger);
                }
                catch
                {
                }
            }
            await scheduler.Start();

            return(true);
        }
Esempio n. 4
0
        public async Task <bool> StopAll()
        {
            var scheduer = await SchedulerFactory.GetScheduler();

            await scheduer.PauseAll();

            return(true);
        }
 public JobScheduler(bool isPrimary,
                     Func <Type, IJobActivity> getJob,
                     Func <IAppConfigRepository> appConfigRepository,
                     ILogger traceSource)
 {
     // get a quartzScheduler
     _quartzScheduler  = SchedulerFactory.GetScheduler();
     _schedulerDbTools = new SchedulerDbContext(appConfigRepository);
     _traceSource      = traceSource;
     _isPrimary        = isPrimary;
     _getJob           = getJob;
 }
Esempio n. 6
0
        public async Task <bool> StopJob(int id)
        {
            var scheduler = await SchedulerFactory.GetScheduler();

            var jobData = await JobHelper.GetAutoJobAsync(id);

            if (await Exists(jobData.JobName, jobData.JobGroup))
            {
                return(await scheduler.DeleteJob(new JobKey(jobData.JobName, jobData.JobGroup)));
            }
            return(true);
        }
        public async Task ScheduleJobs(CancellationToken cancellationToken)
        {
            Console.WriteLine("Scheduling the jobs");
            Scheduler = await SchedulerFactory.GetScheduler(cancellationToken);

            Scheduler.JobFactory = JobFactory;

            foreach (var jobMetadata in JobsMetadata)
            {
                await Scheduler.ScheduleJob(CreateJob(jobMetadata), CreateTrigger(jobMetadata), cancellationToken);

                Console.WriteLine($"{jobMetadata.JobName} has been scheduled");
            }

            await Scheduler.Start(cancellationToken);
        }
        static void RunOneSimulation(String path, string schedulerName)
        {
            var ps   = new ProblemSetting();
            var jobs = new List <Job>();

            FileUtil.ReadData(path, ref ps, ref jobs);


            IScheduler scheduler = SchedulerFactory.GetScheduler(schedulerName, ps);


            var simulator = new Simulator(scheduler, ps, jobs);

            var simulationresult = simulator.Simulate();

            Console.WriteLine(simulationresult);
        }
Esempio n. 9
0
        private void zUpdateScheduler()
        {
            if (rbOneTime.Checked && !(m_Schedule is OneTimeSchedule))
            {
                m_Schedule = new OneTimeSchedule();
            }
            if (rbHourly.Checked && !(m_Schedule is HourlySchedule))
            {
                m_Schedule = new HourlySchedule()
                {
                    HourlyRecurrence = TimeSpan.FromHours(1)
                };
            }
            if (rbDaily.Checked && !(m_Schedule is DailySchedule))
            {
                m_Schedule = new DailySchedule()
                {
                    DailyRecurrence         = 1,
                    DailyRepetitionInterval = TimeSpan.FromHours(1)
                };
            }
            if (rbWeekly.Checked && !(m_Schedule is WeeklySchedule))
            {
                m_Schedule = new WeeklySchedule()
                {
                    DailyRepetitionInterval = TimeSpan.FromHours(1)
                };
            }
            if (rbMonthly.Checked && !(m_Schedule is MonthlySchedule))
            {
                m_Schedule = new MonthlySchedule()
                {
                    MonthlyRecurrenceType   = MonthlyRecurrenceType.OrdinalDays,
                    DailyRepetitionInterval = TimeSpan.FromHours(1)
                };
            }

            zClearScheduler();
            if (!(m_Schedule is OneTimeSchedule))
            {
                m_Scheduler      = SchedulerFactory.GetScheduler(m_Schedule);
                m_Scheduler.Dock = DockStyle.Fill;
                gbScheduler.Controls.Add(m_Scheduler);
            }
        }
Esempio n. 10
0
        public void Init()
        {
            var scheduler = SchedulerFactory.GetScheduler("testscheduler", 1);

            for (int i = 0; i < 10; i++)
            {
                IJobDetail job;
                if (i < 5)
                {
                    job = JobBuilder.Create <HelloJob>().SetIdentifiyName("hello job" + i).Build();
                }
                else
                {
                    job = JobBuilder.Create <TenSecondJob>().SetIdentifiyName("10s job" + i).Build();
                }
                var trigger = TriggerBuilder.Create().SetIdentifiyName("trigger" + i).SetRepeat().SetStartHour(12).Build();
                scheduler.SchedulerJob(job, trigger);
            }
        }
Esempio n. 11
0
 /// <summary>
 /// 修改一个任务的触发时间(使用默认的任务组名,触发器名,触发器组名)
 /// </summary>
 /// <param name="jobQuartz">作业实体</param>
 public static void UpdateJobTime(JobQuartzOutPut jobQuartz)
 {
     try
     {
         IScheduler   sched      = SchedulerFactory.GetScheduler();
         TriggerKey   triggerKey = new TriggerKey(jobQuartz.TriggerName, jobQuartz.TriggerGroupName);
         ICronTrigger trigger    = (ICronTrigger)sched.GetTrigger(triggerKey);
         if (trigger == null)
         {
             return;
         }
         RemoveJob(jobQuartz);
         QuartzEnum type = (QuartzEnum)Enum.Parse(typeof(QuartzEnum), jobQuartz.TriggerType);
         AddScheduleJob(jobQuartz, type);
     }
     catch (Exception e)
     {
         throw new Exception(e.Message);
     }
 }
Esempio n. 12
0
        /// <summary>
        /// 移除一个任务(使用默认的任务组名,触发器名,触发器组名)
        /// </summary>
        /// <param name="jobQuartz">作业实体</param>
        public static void RemoveJob(JobQuartzOutPut jobQuartz)
        {
            try
            {
                IScheduler sched      = SchedulerFactory.GetScheduler();
                JobKey     jobkey     = new JobKey(jobQuartz.JobName, jobQuartz.JobGroup);
                TriggerKey triggerKey = new TriggerKey(jobQuartz.TriggerName, jobQuartz.TriggerGroupName);

                //停止触发器
                sched.PauseTrigger(triggerKey);
                //移除触发器
                sched.UnscheduleJob(triggerKey);
                //删除任务
                sched.DeleteJob(jobkey);
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }
Esempio n. 13
0
        public async Task <IActionResult> Create([FromQuery] string cron, DateTime?start = null, DateTime?end = null, [FromQuery] string name = "default", [FromQuery] string desc = "default")
        {
            Logger.LogInformation($"{nameof(cron)}: [{cron}], {nameof(name)}: [{name}], {nameof(desc)}: [{desc}]");
            //Console.WriteLine($"{nameof(desc)}: [{desc}], {nameof(cron)}: [{cron}]");
            // 调度器
            if (Scheduler == null)
            {
                Scheduler = await SchedulerFactory.GetScheduler();
            }
            await Scheduler.Start();

            // 这里打印的数据表示这是同一个Scheduler
            //Logger.LogInformation($"Scheduler.GetHashCode: {Scheduler.GetHashCode()}");

            // 触发器
            var trigger = TriggerBuilder.Create()
                          .WithCronSchedule(cron)
                          .StartAt(start ?? DateTime.Now)
                          .EndAt(end ?? DateTime.MaxValue)
                          .EndAt(end)
                          //.WithIdentity(new TriggerKey(name+"-trigger") { Group = name+"-group" })
                          .Build();

            // 任务器
            var jobDeatail = JobBuilder.Create <PrintJob>()
                             //.WithDescription(desc)
                             //.WithIdentity(name+"-job", name+"-group")
                             .UsingJobData(nameof(name), name)
                             .UsingJobData(nameof(desc), desc)
                             .Build();

            await Scheduler.ScheduleJob(jobDeatail, trigger);

            return(new JsonResult(new
            {
                Code = 200,
                Message = "定时打印时间任务创建成功"
            }));
        }
Esempio n. 14
0
        public async Task <bool> Start(int id)
        {
            var scheduler = await SchedulerFactory.GetScheduler();

            scheduler.JobFactory = IOCFactory;

            var jobData = await JobHelper.GetAutoJobAsync(id);

            if (jobData.JobStatus == 0)
            {
                return(false);
            }
            DateTime startTime = jobData.StartTime ?? DateTime.Now;
            DateTime?endTime   = jobData.EndTime;

            ITrigger   trigger   = JobHelper.CreateTrigger(jobData.JobName, jobData.JobGroup, startTime, jobData.CronExpression, endTime);
            IJobDetail jobDetail = JobHelper.CreateDetail <JobExecute>(jobData.JobName, jobData.JobGroup, jobData.DeepCloneByXML());

            await scheduler.ScheduleJob(jobDetail, trigger);

            return(true);
        }
Esempio n. 15
0
        /// <summary>
        /// Gets the Mock Scheduler
        /// </summary>
        /// <param name="queueName">
        /// Queue Name
        /// </param>
        /// <param name="tableName">
        /// Table Name
        /// </param>
        /// <returns>
        /// The IScheduler instance to use.
        /// </returns>
        /// <exception cref="ArgumentNullException">
        /// Parameter config cannot be null.
        /// </exception>
        public static IScheduler Scheduler(string queueName,
                                           string tableName,
                                           CommerceConfig config)
        {
            if (config == null)
            {
                throw new ArgumentNullException("config", "Parameter config cannot be null.");
            }

            if (scheduler == null)
            {
                scheduler =
                    SchedulerFactory.GetScheduler(CloudConfigurationManager.GetSetting("Lomo.Commerce.Scheduler.ConnectionString"),
                                                  queueName, tableName);
                if (config.UseMockPartnerDependencies == true)
                {
                    scheduler = LateBinding.BuildObjectFromLateBoundAssembly <IScheduler>("MockScheduler",
                                                                                          LateBoundMocksAssemblyTypes);
                }
            }

            return(scheduler);
        }
Esempio n. 16
0
        public async Task <bool> Exists(string name, string group)
        {
            var scheduler = await SchedulerFactory.GetScheduler();

            return(await scheduler.GetJobDetail(new JobKey(name, group)) != null);
        }