// POST api/Schedules
 public HttpResponseMessage Post(Job jobContext)
 {
     try
     {
         SchedulerWrapper.Wrapper.ScheduleJob(jobContext);
         return Request.CreateResponse(HttpStatusCode.Created);
     }
     catch (Exception ex)
     {
         return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex);
     }
 }
Exemple #2
0
        static public void Push(Job context)
        {
            var factory = new ConnectionFactory() { HostName = context.Queue.Host };

            using (var connection = factory.CreateConnection())
            {
                using (var channel = connection.CreateModel())
                {
                    channel.QueueDeclare(context.Queue.Name, true, false, false, null);
                    var body = Encoding.UTF8.GetBytes(context.Message.ToString());
                    var properties = channel.CreateBasicProperties();
                    properties.SetPersistent(true);
                    channel.BasicPublish("", context.Queue.Name, properties, body);
                    Log.Debug(string.Format("Pushed message {0} to queue {1}", context.Message.ToString(), context.Queue.Name));
                    Log.Info(string.Format("Pushed message to queue {0}", context.Queue.Name));
                }
            }
        }
        public void ScheduleJob(Job jobContext)
        {
            var jobData = SetJobDataMapFromContext(jobContext);
            IJobDetail job = JobBuilder.Create<QueueJob>()
                .WithIdentity(jobContext.Name)
                .SetJobData(jobData)
                .Build();

            var triggerBuilder = TriggerBuilder.Create()
                .WithIdentity(jobContext.Name)
                .ForJob(jobContext.Name);

            if (!String.IsNullOrWhiteSpace(jobContext.Cron))
                triggerBuilder.WithCronSchedule(jobContext.Cron);
            else
                triggerBuilder.StartNow();

            var trigger = triggerBuilder.Build();

            if (_scheduler.CheckExists(new JobKey(jobContext.Name)))
                _scheduler.DeleteJob(new JobKey(jobContext.Name));

            _scheduler.ScheduleJob(job, trigger);
        }
        private static JobDataMap SetJobDataMapFromContext(Job context)
        {
            if (context.Message != null &&
                !string.IsNullOrWhiteSpace(context.Message.ToString()) &&
                context.Message.ToString().Trim().StartsWith("{"))
            {
                context.Message = JsonConvert.SerializeObject(context.Message);
            }

            var jobData = new JobDataMap();
            jobData.Put("JobContext", context);
            return jobData;
        }