public override void Run() { try { Tools.ServiceSupport service = new Tools.ServiceSupport(); List<int> tasks = service.NodeService.GetNodeTasks(GlobalConfig.NodeId, DataObject.Constants.TaskState.Running); List<int> stopTasks = new List<int>(); foreach (var item in tasks) { try { var info = TaskPoolManager.GetInstance().Get(item.ToString()); if (info == null) stopTasks.Add(item); } catch (Exception ex) { service.LogService.AddNodeError(GlobalConfig.NodeId, "节点任务异常停止检测出现错误,", ex); } } stopTasks.ForEach((c) => { service.LogService.AddTaskError(c, "任务[" + c + "]运行可能异常停止了", new Exception("任务处于运行状态,但是相应集群节点中,未发现任务在运行")); }); } catch (Exception ex) { LogHelper.Write("节点[" + GlobalConfig.NodeId + "],节点任务异常停止检测出现错误,错误信息:" + ex.Message); } }
public override void Run() { try { Tools.ServiceSupport service = new Tools.ServiceSupport(); List<int> tasks = service.NodeService.GetNodeTasks(GlobalConfig.NodeId, DataObject.Constants.TaskState.Stop); List<int> runTasks = new List<int>(); foreach (var item in tasks) { try { var info = Tasker.Node.NodeRuntime.TaskPoolManager.GetInstance().Get(item.ToString()); if (info != null) runTasks.Add(item); } catch (Exception e) { service.LogService.AddNodeError(GlobalConfig.NodeId, "节点任务异常运行检测出现错误", e); } } runTasks.ForEach((c) => { service.LogService.AddTaskError(c, "任务[" + c + "]资源运行异常,可能需要手动卸载。", new Exception("任务处于停止状态,但是相应集群节点中,发现任务存在在运行池中未释放")); }); } catch (Exception ex) { LogHelper.Write("节点[" + GlobalConfig.NodeId + "],任务资源回收异常,错误信息:" + ex.Message); } }
/// <summary> /// 执行命令 /// </summary> static void OnCommand() { Tools.ServiceSupport service = new Tools.ServiceSupport(); while (true) { try { if (_LastCommandId < 0) _LastCommandId = service.NodeService.GetNodeLastCommandId(GlobalConfig.NodeId); List<CommandDTO> commands = service.NodeService.GetNodeCommands(GlobalConfig.NodeId, _LastCommandId); foreach (CommandDTO item in commands) { try { CommandFactory.Execute(item); item.State = Constants.CommandState.Success; service.NodeService.UpdateNodeCommand(item); LogHelper.Write(string.Format("当前节点执行命令成功! id:{0},命令:{1}.}", item.Id, item.CommandName)); } catch (Exception ex) { item.State = Constants.CommandState.Error; service.NodeService.UpdateNodeCommand(item); LogHelper.Write(string.Format("当前节点执行命令失败!id:{0},命令:{1}", item.Id, item.CommandName)); } _LastCommandId = Math.Max(_LastCommandId, item.Id); } } catch (Exception e) { LogHelper.Write("节点:" + GlobalConfig.NodeId + ",命令监听异常,错误信息:" + e.Message); } Thread.Sleep(3000); } }
public void Execute(IJobExecutionContext context) { try { Tools.ServiceSupport service = new Tools.ServiceSupport(); int taskId = Convert.ToInt32(context.JobDetail.Key.Name); NodeTaskRuntimeInfo info = TaskPoolManager.GetInstance().Get(taskId.ToString()); if (info == null || info.TaskDLL == null) { service.LogService.AddTaskError(taskId, "", new System.Exception("当前任务信息为空引用,任务编号[" + taskId + "]")); return; } info.TaskLock.Invoke(() => { try { info.TaskDLL.TryRun(); } catch (Exception ex) { throw ex; } }); } catch (Exception ex) { LogHelper.Write("任务回调系统异常,错误信息:" + ex.Message); } }
public override void Run() { Tools.ServiceSupport service = new Tools.ServiceSupport(); DateTime sysTime = service.SystemService.GetSysTime(); service.NodeService.RefreshNode(new NodeDTO() { Id = GlobalConfig.NodeId, NodeHost = System.Net.Dns.GetHostName(), NodeName = "新增节点_" + GlobalConfig.NodeId, CreateTime = sysTime, UpdateTime = sysTime, NodeHeartbeat = 10000 }); }
public TaskProvider() { _Service = new Tools.ServiceSupport(); }
/// <summary> /// 恢复已启动任务 /// </summary> static void RecoveryTask() { Tools.ServiceSupport service = new Tools.ServiceSupport(); try { LogHelper.Write("节点[" + GlobalConfig.NodeId + "]启动成功,准备开始恢复开启任务"); List<int> tasks = service.NodeService.GetNodeTasks(GlobalConfig.NodeId, Constants.TaskState.Running); foreach (int t in tasks) { try { CommandFactory.Execute(new CommandDTO() { Id = -1, NodeId = GlobalConfig.NodeId, TaskId = t, State = Constants.CommandState.None, CommandName = Constants.CommandName.StartTask.ToString(), CreateTime = DateTime.Now }); } catch (Exception ex) { LogHelper.Write(string.Format("恢复已经开启的任务 {0} 失败, 错误信息:", t, ex.Message)); } } LogHelper.Write(string.Format("恢复已经开启的任务完毕,共{0}条任务重启", tasks.Count)); } catch (Exception e) { LogHelper.Write("节点[" + GlobalConfig.NodeId + "],恢复开启任务失败!"); } }