Exemple #1
0
 public JsonResult Schedule([FromBody] HttpJobDescriptor jobDescriptor)
 {
     try
     {
         var jobId = string.Empty;
         jobId = BackgroundJob.Schedule(() => HttpJobExecutor.DoRequest(jobDescriptor), TimeSpan.FromMinutes((double)jobDescriptor.DelayInMinute));
         return(new JsonResult(new { Flag = true, Message = $"Job:#{jobId}-{jobDescriptor.JobName}已加入队列" }));
     }
     catch (Exception ex)
     {
         return(new JsonResult(new { Flag = false, Message = ex.Message }));
     }
 }
Exemple #2
0
 public JsonResult Recurring([FromBody] HttpJobDescriptor jobDescriptor)
 {
     try
     {
         var jobId = string.Empty;
         RecurringJob.AddOrUpdate(jobDescriptor.JobName, () => HttpJobExecutor.DoRequest(jobDescriptor), jobDescriptor.Corn, TimeZoneInfo.Local);
         return(new JsonResult(new { Flag = true, Message = $"Job:{jobDescriptor.JobName}已加入队列" }));
     }
     catch (Exception ex)
     {
         return(new JsonResult(new { Flag = false, Message = ex.Message }));
     }
 }
Exemple #3
0
 public JsonResult Enqueue(HttpJobDescriptor jobDescriptor)
 {
     try
     {
         var jobId = string.Empty;
         jobId = BackgroundJob.Enqueue(() => HttpJobExecutor.DoRequest(jobDescriptor));
         return(new JsonResult(new { Flag = true, Message = $"Job:#{jobId}-{jobDescriptor.JobName}已加入队列" }));
     }
     catch (Exception ex)
     {
         return(new JsonResult(new { Flag = false, Message = ex.Message }));
     }
 }
Exemple #4
0
        public static void DoRequest(HttpJobDescriptor jobDestriptor)
        {
            var client     = new RestClient(jobDestriptor.HttpUrl);
            var httpMethod = (object)Method.POST;

            if (!Enum.TryParse(typeof(Method), jobDestriptor.HttpMethod.ToUpper(), out httpMethod))
            {
                throw new Exception($"不支持的HTTP动词:{jobDestriptor.HttpMethod}");
            }
            var request = new RestRequest((Method)httpMethod);

            if (jobDestriptor.JobParameter != null)
            {
                var json = JsonConvert.SerializeObject(jobDestriptor.JobParameter);
                request.AddParameter("application/json", json, ParameterType.RequestBody);
            }
            var response = client.Execute(request);

            if (response.StatusCode != HttpStatusCode.OK)
            {
                throw new Exception($"调用接口{jobDestriptor.HttpUrl}失败,接口返回:{response.Content}");
            }
        }