Ejemplo n.º 1
0
        public async Task Execute(IJobExecutionContext context)
        {
            try
            {
                IQuartzOptionRepository quartzOptionRepository = ServiceLocator.Get <IQuartzOptionRepository>();
                IHttpClientFactory      httpClientFactory      = ServiceLocator.Get <IHttpClientFactory>();
                AbstractTrigger         trigger      = (context as JobExecutionContextImpl).Trigger as AbstractTrigger;
                QuartzOption            quartzOption = quartzOptionRepository.SelectSingle(s => (s.JobName == trigger.Name && s.GroupName == trigger.Group) ||
                                                                                           (s.JobName == trigger.JobName && s.GroupName == trigger.JobGroup));
                if (quartzOption == null)
                {
                    throw new ArgumentException(string.Format("分组:{0},作业:{1}不存在", quartzOption.GroupName, quartzOption.JobName));
                }
                HttpClient          httpClient      = httpClientFactory.CreateClient();
                HttpResponseMessage responseMessage = null;
                switch (quartzOption.RequestType)
                {
                case "GET":
                    responseMessage = await httpClient.GetAsync(quartzOption.Api);

                    responseMessage.EnsureSuccessStatusCode();
                    break;

                case "POST":
                    string[] arr = quartzOption.ParameterValue.Split(',');
                    Dictionary <string, string> para = new Dictionary <string, string>();
                    foreach (var item in arr)
                    {
                        string[] itemArr = item.Split(':');
                        para.Add(itemArr[0], itemArr[2]);
                    }
                    FormUrlEncodedContent content = new FormUrlEncodedContent(para);
                    responseMessage = await httpClient.PostAsync(quartzOption.Api, content);

                    responseMessage.EnsureSuccessStatusCode();
                    break;

                case "DELETE":
                    responseMessage = await httpClient.DeleteAsync(quartzOption.Api);

                    responseMessage.EnsureSuccessStatusCode();
                    break;
                }
                ApiResult apiResult = JsonConvert.DeserializeObject <ApiResult>(await responseMessage.Content.ReadAsStringAsync());
                if (apiResult.Code != HttpStatusCode.SUCCESS)
                {
                    throw new HttpRequestException(apiResult.Msg);
                }
                quartzOption.LastActionTime = DateTime.Now;
                quartzOptionRepository.Update(quartzOption);
            }
            catch (Exception ex)
            {
                LogUtils.LogError(ex, "Blog.Quartz.Application.Quartz.Job", ex.Message);
            }
        }
Ejemplo n.º 2
0
 public QuartzOptionService(IQuartzOptionRepository quartzOptionRepository, ISchedulerFactory schedulerFactory)
 {
     _quartzOptionRepository = quartzOptionRepository;
     _schedulerFactory       = schedulerFactory;
 }