예제 #1
0
 void AsyncListen() 
 {//异步进程进行监听
     int timeSpan = DefualtRefreshCalTicketTimeSpan;//默认轮询间隔
     QuartzJobService.QuartzJob job = new QuartzJob();
     job.CreateJobWithParam<QuartzJobService.JobDelegate<WebDataCaptureForm>>(new object[] { new QuartzJobService.BaseDelegate(DoJob), null }, DateTime.Now, 2, 0);
           
 }
예제 #2
0
        public async Task <ICollection <QuartzJob> > GetScheduledJobs()
        {
            var jobKeys = await _scheduler.GetJobKeys(GroupMatcher <JobKey> .AnyGroup());

            return(jobKeys.Aggregate(new List <QuartzJob>(), (jobs, jobKey) =>
            {
                var jobDetail = _scheduler.GetJobDetail(jobKey).Result;

                var quartzJob = new QuartzJob();

                quartzJob.Name = jobDetail.Key.Name;
                quartzJob.Group = jobDetail.Key.Group;
                quartzJob.Parameters = GetParameters(jobDetail).ToArray();

                var triggers = _scheduler.GetTriggersOfJob(jobDetail.Key).Result;

                quartzJob.Triggers = triggers.Select(trigger => new QuartzTrigger()
                {
                    Name = trigger.Key.Name,
                    Group = trigger.Key.Group,
                    NextFireTime = trigger.GetNextFireTimeUtc()
                }).ToList();

                jobs.Add(quartzJob);

                return jobs;
            }));
        }
예제 #3
0
        void RunJob()
        {
            //Quartz
            QuartzJob <JobModel> .RunJobQuartz("Job1", "jobTriggerName1", 10).GetAwaiter().GetResult();

            QuartzJob <JobInsertData> .RunJobQuartz("Job2", "jobTriggerName2", 20).GetAwaiter().GetResult();
        }
예제 #4
0
        public ResultMessage DoValidation(QuartzJob model)
        {
            ResultMessage msg = new ResultMessage();

            if (string.IsNullOrEmpty(model.cronSchedule))
            {
                msg.Success = false;
                msg.Content = "执行时间不能为空";

                return(msg);
            }
            if (string.IsNullOrEmpty(model.@params))
            {
                msg.Success = false;
                msg.Content = "班次代码不能为空";

                return(msg);
            }



            return(new ResultMessage()
            {
                Success = true, Content = ""
            });
        }
예제 #5
0
        public static (IJobDetail, ITrigger)  SetUpNotificationJobsUpdater()
        {
            var jobDetail = QuartzJob.CreateJob(Repeat.EveryMinute);
            var trigger   = QuartzTrigger.CreateTrigger(Repeat.EveryMinute);

            return(jobDetail, trigger);
        }
예제 #6
0
        public bool Create(QuartzJob job)
        {
            DataContext dc = new DataContext(this.DbString);

            dc.Context.GetTable <QuartzJob>().InsertOnSubmit(job);
            dc.Context.SubmitChanges();
            return(true);
        }
예제 #7
0
        private void IntervalListen()
        {
            string       group = "ListenNIC";
            QuartzJob    job   = new QuartzJob(group);
            BaseDelegate bd    = new BaseDelegate(DoInterval);
            //job.CreateJobWithParam(,)
            int interval = 30;
            int repeact  = 24 * 60 * 60 / interval;

            job.CreateJobWithParam <JobDelegateFunction>(new object[] { bd }, DateTime.Now, interval, repeact);
        }
예제 #8
0
파일: Program.cs 프로젝트: wqh3944/Grap
        static void Main(string[] args)
        {
            List <Lottery> lts = DapperHelper.getLotterys();

            foreach (Lottery l in lts)
            {
                QuartzJob.CreateJob("task" + l.lotteryID, "CreateTask", l);
            }

            Console.ReadLine();
        }
예제 #9
0
        public bool Delete(int id)
        {
            DataContext dc  = new DataContext(this.DbString);
            QuartzJob   job = dc.Context.GetTable <QuartzJob>().FirstOrDefault(s => s.id.Equals(id));

            if (job != null)
            {
                dc.Context.GetTable <QuartzJob>().DeleteOnSubmit(job);
                dc.Context.SubmitChanges();
            }
            return(true);
        }
예제 #10
0
        void NewThreadDoQueryMsg(object param)
        {
            //object[] ps = param as object[];
            //WebChatLoginTocken tocken = ps[0] as WebChatLoginTocken;
            //string deviceID = ps[1] as string;
            //object[] funParam = new object[] { tocken, deviceID };

            QuartzJob    job = new QuartzJob();
            BaseDelegate bd  = new BaseDelegate(CallGetVerifyKey);

            object[] quartParam = new object[] { bd, param };
            job.CreateJobWithParam <JobDelegate <DADefineHelper> >(quartParam, DateTime.Now, 2, -1);
        }
예제 #11
0
        public void QuartzJob_should_be_deserialized_from_new_wire_format()
        {
            var cmd = new ChangeSampleAggregateCommand(1, Guid.NewGuid());
            var evt = new SampleAggregateCreatedEvent("1", cmd.AggregateId);

            var scheduleKey = ScheduleKey.For(cmd);

            var oldSerializer = new Serializer(new SerializerOptions(true, true, null, null));

            var streamEvent = new MemoryStream();

            oldSerializer.Serialize(evt, streamEvent);
            var serializedEvent = streamEvent.ToArray();

            var streamKey = new MemoryStream();

            oldSerializer.Serialize(scheduleKey, streamKey);
            var serializedKey = streamKey.ToArray();

            var jobDataMap = new JobDataMap
            {
                { "EventKey", serializedEvent },
                { "ScheduleKey", serializedKey }
            };

            var job = QuartzJob.CreateJob(scheduleKey, jobDataMap);

            var trigger = TriggerBuilder.Create()
                          .WithIdentity(job.Key.Name, job.Key.Group)
                          .WithSimpleSchedule(x => x.WithMisfireHandlingInstructionFireNow()
                                              .WithRepeatCount(0))
                          .StartAt(BusinessDateTime.Now.AddSeconds(1))
                          .Build();

            var scheduler = GridNode.Container.Resolve <IScheduler>();

            scheduler.ScheduleJob(job, trigger);


            var waiter = GridNode.NewWaiter(Timeout)
                         .Expect <SampleAggregateCreatedEvent>(e => e.SourceId == evt.SourceId)
                         .Create();

            waiter.Wait();
        }
예제 #12
0
파일: Spec.cs 프로젝트: csuffyy/GridDomain
        public void Legacy_wire_data_can_run_with_latest_job_code()
        {
            ScheduleKey      key              = new ScheduleKey(Guid.NewGuid(), Name, Group);
            Command          command          = new SuccessCommand("1232");
            ExecutionOptions executionOptions = new ExecutionOptions(DateTime.Now.AddSeconds(1), typeof(ScheduledCommandSuccessfullyProcessed));

            var serializedCommand = SerializeAsLegacy(command);
            var serializedKey     = SerializeAsLegacy(key);
            var serializedOptions = SerializeAsLegacy(executionOptions);

            var jobDataMap = new JobDataMap
            {
                { QuartzJob.CommandKey, serializedCommand },
                { QuartzJob.ScheduleKey, serializedKey },
                { QuartzJob.ExecutionOptionsKey, serializedOptions }
            };

            var legacyJob = QuartzJob.CreateJob(key, jobDataMap);

            var listener = new CallbackJobListener();

            _quartzScheduler.ListenerManager.AddJobListener(listener, KeyMatcher <JobKey> .KeyEquals(legacyJob.Key));
            var task = listener.TaskFinish.Task;

            var trigger = TriggerBuilder.Create()
                          .WithIdentity(legacyJob.Key.Name, legacyJob.Key.Group)
                          .WithSimpleSchedule(x => x.WithMisfireHandlingInstructionFireNow()
                                              .WithRepeatCount(0))
                          .StartAt(DateTimeOffset.Now.AddMilliseconds(200))
                          .Build();

            _quartzScheduler.ScheduleJob(legacyJob, trigger);

            if (!task.Wait(TimeSpan.FromSeconds(10000)))
            {
                Assert.Fail("Job execution timed out");
            }

            if (task.Result.Item2 != null)
            {
                Assert.Fail("Job threw an exception", task.Result.Item2);
            }
        }
예제 #13
0
        private static IReadOnlyDictionary <IJobDetail, IReadOnlyCollection <ITrigger> > GetJobs(IEnumerable <SimpleTriggerModel> notifications)
        {
            var triggers        = new List <ITrigger>();
            var triggersAndJobs = new Dictionary <IJobDetail, IReadOnlyCollection <ITrigger> >();
            var repeatTypes     = notifications.Select(x => x.RepeatType).Distinct();

            foreach (Repeat repeatType in repeatTypes)
            {
                var job = QuartzJob.CreateJob(repeatType);
                var notificationsOfType = notifications.Where(x => x.RepeatType == repeatType);
                foreach (var notification in notificationsOfType)
                {
                    var triggerId = TriggerNotificationsObserver.GetTriggerId(notification);
                    var trigger   = QuartzTrigger.CreateTrigger(notification.DateStart, notification.RepeatType, triggerId.ToString());//notification.TriggerId.ToString());
                    triggers.Add(trigger);
                }
                triggersAndJobs.Add(job, triggers.ToList());
                triggers.Clear();
            }

            return(triggersAndJobs);
        }
예제 #14
0
        private async Task Schedule(ScheduleCommandExecution message)
        {
            ScheduleKey key = message.Key;

            try
            {
                _logger.Debug($"Scheduling job {key} for {message.Options.RunAt}");
                var job     = QuartzJob.Create(message.Key, message.Command, message.CommandMetadata, message.Options);
                var trigger =
                    TriggerBuilder.Create()
                    .WithIdentity(job.Key.Name, job.Key.Group)
                    .WithSimpleSchedule(x => x.WithMisfireHandlingInstructionFireNow().WithRepeatCount(0))
                    .StartAt(message.Options.RunAt)
                    .Build();

                var fireTime = await _scheduler.ScheduleJob(job, trigger);

                var scheduleConfirmation = new CommandExecutionScheduled(message.Command.Id, fireTime.UtcDateTime);
                Sender.Tell(scheduleConfirmation);
                _publisher.Publish(scheduleConfirmation, message.CommandMetadata);
            }
            catch (Exception e)
            {
                _logger.Error(e, "Error while scheduled job {Task}", key);
                if (e is JobPersistenceException && e.InnerException?.GetType() == typeof(ObjectAlreadyExistsException))
                {
                    Sender.Tell(new AlreadyScheduled(key));
                }
                else
                {
                    Sender.Tell(new Status.Failure(e));
                }

                var fault = Fault.New(message, e, message.Command.ProcessId, typeof(SchedulingActor));
                _publisher.Publish(fault, message.CommandMetadata);
            }
        }
예제 #15
0
        public JsonResult Create([Bind(Include = "cronSchedule,params")] QuartzJob job)
        {
            ResultMessage msg = new ResultMessage();

            try
            {
                job.jobType = (int)CronJobType.CalAtt;

                msg = DoValidation(job);

                if (!msg.Success)
                {
                    return(Json(msg, JsonRequestBehavior.AllowGet));
                }
                else
                {
                    IQuartzJobService cs = new QuartzJobService(Settings.Default.db);
                    bool isSucceed       = cs.Create(job);

                    msg.Success = isSucceed;
                    msg.Content = isSucceed ? "" : "添加失败";

                    // 重启任务服务
                    TaskDispatcher dtt = new TaskDispatcher(Settings.Default.queue);
                    dtt.SendRestartSvcMessage();

                    return(Json(msg, JsonRequestBehavior.AllowGet));
                }
            }
            catch (Exception ex)
            {
                return(Json(new ResultMessage()
                {
                    Success = false, Content = ex.Message
                }, JsonRequestBehavior.AllowGet));
            }
        }
예제 #16
0
        public void GetAllActiveJob()
        {
            QuartzJob job = new QuartzJob("Query");

            job.GetAllActiveJob();
        }