Example #1
0
        //public virtual string GetConfigValue(DbConn PubConn, string key)
        //{
        //    tb_config_dal dal = new tb_config_dal();
        //    var value = dal.Get2(PubConn, key);
        //    return value;
        //}

        public virtual List <tb_config_model> GetConfig(DbConn PubConn)
        {
            tb_config_dal dal = new tb_config_dal();
            var           rs  = dal.List(PubConn);

            return(rs);
        }
Example #2
0
 public JsonResult Delete(int id)
 {
     return(this.Visit(EnumUserRole.Admin, () =>
     {
         try
         {
             tb_config_dal dal = new tb_config_dal();
             using (DbConn PubConn = DbConn.CreateConn(Config.TaskConnectString))
             {
                 PubConn.Open();
                 bool state = dal.Delete(PubConn, id);
                 RedisHelper.RefreashRedisServerIP();
                 RedisHelper.SendMessage(new RedisCommondInfo()
                 {
                     CommondType = EnumCommondType.ConfigUpdate
                 });
                 return Json(new { code = 1, state = state });
             }
         }
         catch (Exception ex)
         {
             return Json(new { code = -1, msg = ex.Message });
         }
     }));
 }
Example #3
0
 public ActionResult Add(tb_config_model model)
 {
     return(this.Visit(EnumUserRole.Admin, () =>
     {
         using (DbConn PubConn = DbConn.CreateConn(Config.TaskConnectString))
         {
             PubConn.Open();
             tb_config_dal dal = new tb_config_dal();
             model.lastupdatetime = DateTime.Now;
             model.configkey = model.configkey.NullToEmpty();
             model.configvalue = model.configvalue.NullToEmpty();
             model.remark = model.remark.NullToEmpty();
             if (model.id == 0)
             {
                 dal.Add(PubConn, model);
             }
             else
             {
                 dal.Edit(PubConn, model);
             }
             RedisHelper.RefreashRedisServerIP();
             RedisHelper.SendMessage(new RedisCommondInfo()
             {
                 CommondType = EnumCommondType.ConfigUpdate
             });
         }
         return RedirectToAction("index");
     }));
 }
Example #4
0
 public static void RefreashRedisServerIP()
 {
     try
     {
         using (DbConn PubConn = DbConn.CreateConn(Config.TaskConnectString))
         {
             PubConn.Open();
             var dal    = new tb_config_dal();
             var config = dal.Get(PubConn, RedisConfig.RedisServerKey);
             if (config != null)
             {
                 RedisConfig.RedisServer = config.configvalue;
             }
         }
     }
     catch (Exception exp)
     {
         LogHelper.AddError(new Domain.Model.tb_error_model()
         {
             errorcreatetime = DateTime.Now,
             errortype       = (int)BSF.BaseService.TaskManager.SystemRuntime.EnumTaskLogType.SystemError,
             msg             = string.Format("从配置中获取{0}出错,", RedisConfig.RedisServerKey) + exp.DetailMessage(),
             nodeid          = 0,
             taskid          = 0
         });
     }
 }
Example #5
0
        //
        // GET: /Developers/

        public ActionResult Index()
        {
            return(this.Visit(EnumUserRole.Admin, () =>
            {
                using (DbConn PubConn = DbConn.CreateConn(Config.TaskConnectString))
                {
                    PubConn.Open();
                    List <tb_config_model> Model = new tb_config_dal().GetList(PubConn);
                    return View(Model);
                }
            }));
        }
Example #6
0
        /// <summary>
        /// 任务调度平台根据发布的任务时间配置,定时回调运行方法
        /// 开发人员的任务插件必须要重载并该方法
        /// </summary>
        public override void Run()
        {
            /*
             * this.OpenOperator 用于任务调度平台提供给第三方使用的所有api接口封装
             */
            ConfigHelper.LoadConfig(this.AppConfig["BusinessMQManageConnectString"]);
            var sql = @"";
            List <tb_partition_model>           userdpartitions = new List <tb_partition_model>();
            Dictionary <int, tb_datanode_model> datanodemodels  = new Dictionary <int, tb_datanode_model>();
            DateTime servertime = DateTime.Now;

            SqlHelper.ExcuteSql(this.AppConfig["BusinessMQManageConnectString"], (c) =>
            {
                tb_config_dal configdal = new tb_config_dal();
                sql = configdal.Get(c, "MQCreateTableSql").value;
                tb_partition_dal partitiondal = new tb_partition_dal();
                userdpartitions             = partitiondal.List(c, true);
                tb_datanode_dal datanodedal = new tb_datanode_dal();
                var ms = datanodedal.List(c);
                foreach (var m in ms)
                {
                    datanodemodels.Add(m.datanodepartition, m);
                }
                servertime = c.GetServerDate();
            });

            if (string.IsNullOrWhiteSpace(sql))
            {
                Error(this.AppConfig["BusinessMQManageConnectString"], "MQCreateTableSql未配置参数", new Exception("MQ未找到或者未配置MQCreateTableSql参数,用于每天创建消息分区表"));
                return;
            }

            foreach (var p in userdpartitions)
            {
                var      partitioninfo = XXF.BaseService.MessageQuque.BusinessMQ.SystemRuntime.PartitionRuleHelper.GetPartitionIDInfo(p.partitionid);
                DateTime currenttime   = servertime.Date;
                while (currenttime <= servertime.Date.AddDays(3))                                                                                                      //预创建3天的表
                {
                    var tablename = XXF.BaseService.MessageQuque.BusinessMQ.SystemRuntime.PartitionRuleHelper.GetTableName(partitioninfo.TablePartition, currenttime); //
                    SqlHelper.ExcuteSql(this.GetDataNodeConnectString(datanodemodels[partitioninfo.DataNodePartition]), (c) =>
                    {
                        bool exsit = c.TableIsExist(tablename);
                        if (exsit != true)
                        {
                            string cmd = sql.Replace("{tablepartiton}", XXF.BaseService.MessageQuque.BusinessMQ.SystemRuntime.PartitionRuleHelper.PartitionNameRule(partitioninfo.TablePartition))
                                         .Replace("{daypartition}", currenttime.ToString("yyMMdd")).Replace("{datanodepartiton}", XXF.BaseService.MessageQuque.BusinessMQ.SystemRuntime.PartitionRuleHelper.PartitionNameRule(partitioninfo.DataNodePartition));
                            c.ExecuteSql(cmd, new List <XXF.Db.ProcedureParameter>());
                        }
                    });
                    currenttime = currenttime.AddDays(1);
                }
            }
        }
Example #7
0
        public ActionResult Add(int?id)
        {
            return(this.Visit(EnumUserRole.Admin, () =>
            {
                if (id == null)
                {
                    return View();
                }
                using (DbConn PubConn = DbConn.CreateConn(Config.TaskConnectString))
                {
                    PubConn.Open();
                    tb_config_dal dal = new tb_config_dal();

                    var model = dal.Get(PubConn, id.Value);
                    return View(model);
                }
            }));
        }
Example #8
0
 public static void RefreashRedisServerIP()
 {
     try
     {
         using (DbConn PubConn = DbConn.CreateConn(GlobalConfig.ConnectionString))
         {
             PubConn.Open();
             var dal    = new tb_config_dal();
             var config = dal.Get(PubConn, RedisConfig.RedisServerKey);
             if (config != null)
             {
                 RedisConfig.RedisServer = config.configvalue;
             }
         }
     }
     catch (Exception exp)
     {
         LogHelper.AddNodeError(string.Format("从配置中获取{0}出错,", RedisConfig.RedisServerKey), exp);
     }
 }
Example #9
0
        /// <summary>
        /// 任务的开启
        /// </summary>
        /// <param name="taskid"></param>
        /// <returns></returns>
        public bool Start(int taskid)
        {
            var taskruntimeinfo = TaskPoolManager.CreateInstance().Get(taskid.ToString());

            if (taskruntimeinfo != null)
            {
                throw new Exception("任务已在运行中");
            }

            taskruntimeinfo          = new NodeTaskRuntimeInfo();
            taskruntimeinfo.TaskLock = new TaskLock();
            SqlHelper.ExcuteSql(GlobalConfig.TaskDataBaseConnectString, (c) =>
            {
                tb_task_dal taskdal              = new tb_task_dal();
                taskruntimeinfo.TaskModel        = taskdal.Get(c, taskid);
                tb_version_dal versiondal        = new tb_version_dal();
                taskruntimeinfo.TaskVersionModel = versiondal.GetCurrentVersion(c, taskid, taskruntimeinfo.TaskModel.taskversion);
            });
            string filelocalcachepath = AppDomain.CurrentDomain.BaseDirectory.TrimEnd('\\') + "\\" + GlobalConfig.TaskDllCompressFileCacheDir + @"\" + taskruntimeinfo.TaskModel.id + @"\" + taskruntimeinfo.TaskModel.taskversion + @"\" +
                                        taskruntimeinfo.TaskVersionModel.zipfilename;
            string fileinstallpath             = AppDomain.CurrentDomain.BaseDirectory.TrimEnd('\\') + "\\" + GlobalConfig.TaskDllDir + @"\" + taskruntimeinfo.TaskModel.id;
            string fileinstallmainclassdllpath = fileinstallpath + @"\" + taskruntimeinfo.TaskModel.taskmainclassdllfilename;
            string taskshareddlldir            = AppDomain.CurrentDomain.BaseDirectory.TrimEnd('\\') + "\\" + GlobalConfig.TaskSharedDllsDir;

            BSF.Tool.IOHelper.CreateDirectory(filelocalcachepath);
            BSF.Tool.IOHelper.CreateDirectory(fileinstallpath);
            System.IO.File.WriteAllBytes(filelocalcachepath, taskruntimeinfo.TaskVersionModel.zipfile);

            CompressHelper.UnCompress(filelocalcachepath, fileinstallpath);
            //拷贝共享程序集
            BSF.Tool.IOHelper.CopyDirectory(taskshareddlldir, fileinstallpath);
            try
            {
                new TaskAssemblyRedirect().TryRebulidDll(fileinstallmainclassdllpath, taskruntimeinfo.TaskModel.taskmainclassnamespace);
                var dlltask      = new AppDomainLoader <BaseDllTask>().Load(fileinstallmainclassdllpath, taskruntimeinfo.TaskModel.taskmainclassnamespace, out taskruntimeinfo.Domain);
                var sdktaskmodel = new BSF.BaseService.TaskManager.Model.tb_task_model();
                PropertyHelper.Copy(taskruntimeinfo.TaskModel, sdktaskmodel);
                dlltask.SystemRuntimeInfo = new TaskSystemRuntimeInfo()
                {
                    TaskConnectString = GlobalConfig.TaskDataBaseConnectString,
                    TaskModel         = sdktaskmodel
                };
                //加载AppConfig配置
                var appconfig = new TaskAppConfigInfo();
                if (!string.IsNullOrEmpty(taskruntimeinfo.TaskModel.taskappconfigjson))
                {
                    appconfig = new BSF.Serialization.JsonProvider().Deserialize <TaskAppConfigInfo>(taskruntimeinfo.TaskModel.taskappconfigjson);
                }
                SqlHelper.ExcuteSql(GlobalConfig.TaskDataBaseConnectString, (c) =>
                {
                    tb_config_dal configdal = new tb_config_dal();
                    var cs = configdal.GetList(c);
                    foreach (var o in cs)
                    {
                        if (!appconfig.ContainsKey(o.configkey))
                        {
                            appconfig.Add(o.configkey, o.configvalue);
                        }
                    }
                });

                dlltask.AppConfig       = appconfig;
                taskruntimeinfo.DllTask = dlltask;
                bool r = TaskPoolManager.CreateInstance().Add(taskid.ToString(), taskruntimeinfo);
                SqlHelper.ExcuteSql(GlobalConfig.TaskDataBaseConnectString, (c) =>
                {
                    tb_task_dal taskdal = new tb_task_dal();
                    taskdal.UpdateTaskState(c, taskid, (int)EnumTaskState.Running);
                });
                LogHelper.AddTaskLog("节点开启任务成功", taskid);
                return(r);
            }
            catch (Exception exp)
            {
                DisposeTask(taskid, taskruntimeinfo, true);
                throw exp;
            }
        }