public ActionResult Delete(int id) { try { tb_mqpath_partition_model model = null; using (DbConn conn = DbConfig.CreateConn(DataConfig.MqManage)) { try { conn.Open(); conn.BeginTransaction(); model = pathPartitionDal.Get(conn, id); if (model == null) { throw new Exception("分区不存在"); } if (model.state == (int)XXF.BaseService.MessageQuque.BusinessMQ.SystemRuntime.EnumMqPathPartitionState.Running) { throw new Exception("正在运行中"); } if (model.partitionindex != new tb_mqpath_partition_dal().GetMaxPartitionIndex(conn, model.mqpathid)) { throw new Exception("分区请优先移除最大的分区顺序的分区"); } //移除该分区的所有消费者信息 new tb_consumer_partition_dal().Delete2(conn, model.partitionid); pathPartitionDal.Delete(conn, id); new tb_partition_dal().UpdateIsUsed(conn, 0, model.partitionid); conn.Commit(); } catch (Exception exp) { conn.Rollback(); throw exp; } } ReStartQuque(model.mqpathid); return(Json(new { code = 1, msg = "成功" })); } catch (Exception e) { return(Json(new { code = -1, msg = e.Message })); } }
public virtual bool Add2(DbConn PubConn, tb_mqpath_partition_model model) { List <ProcedureParameter> Par = new List <ProcedureParameter>() { //某路径下的mq的id new ProcedureParameter("@mqpathid", model.mqpathid), //分区id编号 new ProcedureParameter("@partitionid", model.partitionid), //分区顺序号(某个路径下mq的顺序号) new ProcedureParameter("@partitionindex", model.partitionindex), //某路径下mq的状态,1 运行中,0 待数据迁移或停止,-1 待删除 new ProcedureParameter("@state", model.state), }; int rev = PubConn.ExecuteSql(@"insert into tb_mqpath_partition(mqpathid,partitionid,partitionindex,state,createtime) values(@mqpathid,@partitionid,@partitionindex,@state,getdate())" , Par); return(rev == 1); }
public ActionResult SetState(int partitionid, int state) { try { tb_mqpath_partition_model model = null; using (DbConn conn = DbConfig.CreateConn(DataConfig.MqManage)) { conn.Open(); model = new tb_mqpath_partition_dal().GetByPartitionId(conn, partitionid); new tb_mqpath_partition_dal().SetState(conn, partitionid, state); } SendCommandToRedistReStart(model.mqpathid, EnumCommandReceiver.Producter); return(Json(new { code = 1, msg = "成功" })); } catch (Exception exp) { return(Json(new { code = -1, msg = exp.Message })); } }
public virtual bool Edit(DbConn PubConn, tb_mqpath_partition_model model) { List <ProcedureParameter> Par = new List <ProcedureParameter>() { //某路径下的mq的id new ProcedureParameter("@mqpathid", model.mqpathid), //分区id编号 new ProcedureParameter("@partitionid", model.partitionid), //分区顺序号(某个路径下mq的顺序号) new ProcedureParameter("@partitionindex", model.partitionindex), //某路径下mq的状态,1 运行中,0 待数据迁移或停止,-1 待删除 new ProcedureParameter("@state", model.state), //创建时间(以当前库时间为准) new ProcedureParameter("@createtime", model.createtime) }; Par.Add(new ProcedureParameter("@id", model.id)); int rev = PubConn.ExecuteSql("update tb_mqpath_partition set mqpathid=@mqpathid,partitionid=@partitionid,partitionindex=@partitionindex,state=@state,createtime=@createtime where id=@id", Par); return(rev == 1); }
public virtual tb_mqpath_partition_model CreateModel(DataRow dr) { var o = new tb_mqpath_partition_model(); // if (dr.Table.Columns.Contains("id")) { o.id = dr["id"].Toint(); } //某路径下的mq的id if (dr.Table.Columns.Contains("mqpathid")) { o.mqpathid = dr["mqpathid"].Toint(); } //分区id编号 if (dr.Table.Columns.Contains("partitionid")) { o.partitionid = dr["partitionid"].Toint(); } //分区顺序号(某个路径下mq的顺序号) if (dr.Table.Columns.Contains("partitionindex")) { o.partitionindex = dr["partitionindex"].Toint(); } //某路径下mq的状态,1 运行中,0 待数据迁移或停止,-1 待删除 if (dr.Table.Columns.Contains("state")) { o.state = dr["state"].ToByte(); } //创建时间(以当前库时间为准) if (dr.Table.Columns.Contains("createtime")) { o.createtime = dr["createtime"].ToDateTime(); } return(o); }
public ActionResult Add(tb_mqpath_partition_model model) { try { using (DbConn conn = DbConfig.CreateConn(DataConfig.MqManage)) { try { conn.Open(); conn.BeginTransaction(); model.state = (byte)XXF.BaseService.MessageQuque.BusinessMQ.SystemRuntime.EnumMqPathPartitionState.Running; model.partitionindex = new tb_mqpath_partition_dal().GetMaxPartitionIndexOfMqPath(conn, model.mqpathid) + 1; if (new tb_mqpath_dal().Get(conn, model.mqpathid) == null) { throw new Exception("无法找到队列"); } if (new tb_mqpath_partition_dal().GetByPartitionId(conn, model.partitionid) != null) { throw new Exception("分区已被使用"); } if (new tb_mqpath_partition_dal().CheckMaxPartitionIndexOfMqPathIsRunning(conn, model.mqpathid) == false) { throw new Exception("最后的分区未处于正常使用状态,若分区正在待删状态,请删除完毕后新增分区。"); } if (new tb_mqpath_partition_dal().Add2(conn, model)) { new tb_partition_dal().UpdateIsUsed(conn, 1, model.partitionid); var partitioninfo = XXF.BaseService.MessageQuque.BusinessMQ.SystemRuntime.PartitionRuleHelper.GetPartitionIDInfo(model.partitionid); //创建3天的表 var serverdate = conn.GetServerDate().Date; for (int i = 0; i < 3; i++) { var currentdate = serverdate.AddDays(i); var tablename = XXF.BaseService.MessageQuque.BusinessMQ.SystemRuntime.PartitionRuleHelper.GetTableName(partitioninfo.TablePartition, currentdate);// SqlHelper.ExcuteSql(DataConfig.DataNodeParConn(partitioninfo.DataNodePartition + ""), (c) => { bool exsit = c.TableIsExist(tablename); if (exsit != true) { string cmd = DataConfig.MQCreateTableSql.Replace("{tablepartiton}", XXF.BaseService.MessageQuque.BusinessMQ.SystemRuntime.PartitionRuleHelper.PartitionNameRule(partitioninfo.TablePartition)) .Replace("{daypartition}", currentdate.ToString("yyMMdd")).Replace("{datanodepartiton}", XXF.BaseService.MessageQuque.BusinessMQ.SystemRuntime.PartitionRuleHelper.PartitionNameRule(partitioninfo.DataNodePartition)); c.ExecuteSql(cmd, new List <XXF.Db.ProcedureParameter>()); } }); } conn.Commit(); } else { throw new Exception("更新错误"); } } catch (Exception exp) { conn.Rollback(); throw exp; } } ReStartQuque(model.mqpathid); return(RedirectToAction("index")); } catch (Exception e) { ModelState.AddModelError("Error", e.Message); return(View(model)); } }