コード例 #1
0
ファイル: TaskStopedMonitor.cs プロジェクト: cnquan/tasker
 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);
     }
 }
コード例 #2
0
ファイル: TaskRecoverMonitor.cs プロジェクト: cnquan/tasker
        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);
            }
        }
コード例 #3
0
ファイル: CommandQueue.cs プロジェクト: cnquan/tasker
 /// <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);
     }
 }
コード例 #4
0
ファイル: TaskJob.cs プロジェクト: cnquan/tasker
 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);
     }
 }
コード例 #5
0
ファイル: NodeHeartBeatMonitor.cs プロジェクト: cnquan/tasker
 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
     });
 }
コード例 #6
0
ファイル: TaskProvider.cs プロジェクト: cnquan/tasker
 public TaskProvider()
 {
     _Service = new Tools.ServiceSupport();
 }
コード例 #7
0
ファイル: CommandQueue.cs プロジェクト: cnquan/tasker
 /// <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 + "],恢复开启任务失败!");
     }
 }