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 })); } }
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 })); } }
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 })); } }
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}"); } }