public TaskBaseResponse TestMqMessage3(Test3 message) { TaskBaseResponse task = new TaskBaseResponse() { Status = DateTime.Now.Ticks % 7 != 0 ? HttpStatusCode.OK : HttpStatusCode.BadGateway, ErrorMessage = message.Content3 }; return(task); }
public TaskBaseResponse TestMqMessage2([FromBody] Test2 message) { TaskBaseResponse task = new TaskBaseResponse() { Status = DateTime.Now.Ticks % 5 != 0 ? HttpStatusCode.OK : HttpStatusCode.BadGateway, ErrorMessage = message.Content2 }; return(task); }
public TaskBaseResponse TestMqMessage1([FromBody] Test1 message) { var statusCode = HttpStatusCode.OK; if (message.ToJsonString().GetHashCode() % 3 != 0) { statusCode = HttpStatusCode.BadGateway; } TaskBaseResponse task = new TaskBaseResponse() { Status = statusCode, ErrorMessage = message.Content1 }; return(task); }
internal void Handler(FailMqMessageModel model) { int count = 1; var flag = false; do { int defaultInterval = 1000; TaskBaseResponse result = null; try { result = HttpHelper.HttpPost <TaskBaseResponse>(model.ApiUrl, model.MessageContext); LogHelper.LogInfo(logSource, string.Format("MqMessageExecute 调用业务API: {0};{1};{2}", model.ApiUrl, model.MessageContext, result.ToJsonString())); } catch (Exception ex) { if (result.IsNull()) { result = new TaskBaseResponse() { Status = System.Net.HttpStatusCode.InternalServerError }; } defaultInterval += 500; LogHelper.LogError(logSource, string.Format("MqMessageExecute 调用业务异常API: {0};{1};{2}; ex:{3}", model.ApiUrl, model.MessageContext, result.ToJsonString(), ex.ToString())); } if (result.Status == System.Net.HttpStatusCode.OK) { flag = UpdateStatus(model.Code, FailMqMessageStatus.Success); break; } else { count++; Thread.CurrentThread.Join(defaultInterval * count); } } while (count <= 5); if (!flag) { UpdateStatus(model.Code, FailMqMessageStatus.HandlerFail, count); } }
/// <summary> /// 初始化执行任务线程 /// </summary> /// <param name="task">执行任务接口</param> /// <param name="taskModel">任务配置</param> private void InitWorkerThread(ScheduleTaskConfigModel taskModel) { Thread th = new Thread(() => { while (true) { try { //更新数据状态 UpdateRunStatus(taskModel, TaskRunOptions.Runing); var rm = new TaskBaseResponse(); int count = 0; do { int sleepSeconds = (count - 1) * 2000; if (sleepSeconds > 0) { //休眠任务等待下次执行 Thread.Sleep(sleepSeconds); } //执行任务 try { rm = Execute(taskModel.ApiUrl, taskModel.Parameters, taskModel.Method); if (rm.Status == System.Net.HttpStatusCode.OK) { //更新数据状态 UpdateRunStatus(taskModel, TaskRunOptions.Complete); break; } else { LogHelper.LogError(logSource, string.Format("执行任务{0}异常,id:{1};任务即将结束;任务执行返回数据:{2}", taskModel.TaskName, taskModel.Id, JsonHelper.SerializeObject(rm))); } } catch (Exception ex) { UpdateRunStatus(taskModel, TaskRunOptions.ExcetionEnd); LogHelper.LogError(logSource, string.Format("执行任务{0}异常,id:{1};API:{2};ex:{3}", taskModel.TaskName, taskModel.Id, string.Format("{0},{1},{2}", taskModel.ApiUrl, taskModel.Parameters, taskModel.Method), ex.ToString())); //休眠 N 秒后重试 } count++; } while (count <= taskModel.ExceptionNumber); //休眠任务等待下次执行 Thread.Sleep(taskModel.DiffSeconds * 1000); } catch (Exception ex) { UpdateRunStatus(taskModel, TaskRunOptions.ExcetionEnd); LogHelper.LogError(logSource, string.Format("执行任务{0}异常,id:{1};ex:{2}", taskModel.TaskName, taskModel.Id, ex.ToString())); } } }); th.Name = taskModel.TaskName; th.IsBackground = true; threadList.Add(new TaskThreadSettings() { RunTread = th, TaskId = taskModel.Id, ThreadId = th.ManagedThreadId, ThreadName = th.Name, TaskModel = taskModel }); }