public ProducterInfo GetProducterInfo(DbConn PubConn, string mqpath,string productername) { ProducterInfo r = new ProducterInfo(); tb_mqpath_dal mqpathdal = new tb_mqpath_dal(); r.MqPathModel = mqpathdal.Get(PubConn,mqpath); if (r.MqPathModel == null) throw new BusinessMQException(string.Format("当前mqpath:{0}未在MQ中注册队列,请联系管理员注册成功后使用。",mqpath)); tb_mqpath_partition_dal mqpathpartitiondal = new tb_mqpath_partition_dal(); r.MqPathParitionModel = mqpathpartitiondal.GetList(PubConn,r.MqPathModel.id); if (r.MqPathParitionModel == null||r.MqPathParitionModel.Count==0) throw new BusinessMQException(string.Format("当前mqpath:{0}未在MQ中分配相应的分区,请联系管理员分配分区后使用。", mqpath)); //注册生产者 r.ProducterModel = this.RegisterProducter(PubConn, r.MqPathModel.id, productername); //获取分区相关节点 List<int> datanodepartition = new List<int>(); foreach (var p in r.MqPathParitionModel) { var partitionidinfo = PartitionRuleHelper.GetPartitionIDInfo(p.partitionid); if (!datanodepartition.Contains(partitionidinfo.DataNodePartition)) datanodepartition.Add(partitionidinfo.DataNodePartition); } r.DataNodeModelDic = this.GetDataNodeModelsDic(PubConn, datanodepartition); return r; }
public ProducterInfo GetProducterInfo(DbConn PubConn, string mqpath, string productername) { ProducterInfo r = new ProducterInfo(); tb_mqpath_dal mqpathdal = new tb_mqpath_dal(); r.MqPathModel = mqpathdal.Get(PubConn, mqpath); if (r.MqPathModel == null) { throw new BusinessMQException(string.Format("当前mqpath:{0}未在MQ中注册队列,请联系管理员注册成功后使用。", mqpath)); } tb_mqpath_partition_dal mqpathpartitiondal = new tb_mqpath_partition_dal(); r.MqPathParitionModel = mqpathpartitiondal.GetList(PubConn, r.MqPathModel.id); if (r.MqPathParitionModel == null || r.MqPathParitionModel.Count == 0) { throw new BusinessMQException(string.Format("当前mqpath:{0}未在MQ中分配相应的分区,请联系管理员分配分区后使用。", mqpath)); } //注册生产者 r.ProducterModel = this.RegisterProducter(PubConn, r.MqPathModel.id, productername); //获取分区相关节点 List <int> datanodepartition = new List <int>(); foreach (var p in r.MqPathParitionModel) { var partitionidinfo = PartitionRuleHelper.GetPartitionIDInfo(p.partitionid); if (!datanodepartition.Contains(partitionidinfo.DataNodePartition)) { datanodepartition.Add(partitionidinfo.DataNodePartition); } } r.DataNodeModelDic = this.GetDataNodeModelsDic(PubConn, datanodepartition); return(r); }
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 tb_consumer_partition_model RegisterConsumerPartition(DbConn PubConn, int clientid, int partitionindex, string mqpath, long tempid) { var mqpathmodel = GetMQPath(PubConn, mqpath); tb_mqpath_partition_dal mqpathpartitiondal = new tb_mqpath_partition_dal(); var mqpathpartitionmodel = mqpathpartitiondal.GetOfConsumer(PubConn, partitionindex, mqpathmodel.id); if (mqpathpartitionmodel == null) { return(null); } tb_consumer_partition_dal dal = new tb_consumer_partition_dal(); if (dal.Edit2(PubConn, new tb_consumer_partition_model() { consumerclientid = clientid, lastconsumertempid = tempid, partitionid = mqpathpartitionmodel.partitionid, partitionindex = partitionindex }) <= 0) { var partitionidinfo = PartitionRuleHelper.GetPartitionIDInfo(mqpathpartitionmodel.partitionid); var datanodename = PartitionRuleHelper.GetDataNodeName(partitionidinfo.DataNodePartition); long maxid = -1; DateTime serverdate = PubConn.GetServerDate(); string tablename = PartitionRuleHelper.GetTableName(partitionidinfo.TablePartition, serverdate); SqlHelper.ExcuteSql(this.GetDataNodeConnectString(PubConn, partitionidinfo.DataNodePartition), (c) => { var exist = c.TableIsExist(tablename); if (!exist) { throw new BusinessMQException(string.Format("当前数据节点{0},表{1}不存在", partitionidinfo.DataNodePartition, tablename)); } tb_messagequeue_dal mqdal = new tb_messagequeue_dal(); mqdal.TableName = tablename; maxid = mqdal.GetMaxId(c); if (maxid <= 0) { maxid = PartitionRuleHelper.GetMQID(new MQIDInfo() { AutoID = 0, DataNodePartition = partitionidinfo.DataNodePartition, Day = serverdate, TablePartition = partitionidinfo.TablePartition }); } }); dal.Add2(PubConn, new tb_consumer_partition_model() { consumerclientid = clientid, lastconsumertempid = tempid, lastmqid = maxid, partitionid = mqpathpartitionmodel.partitionid, partitionindex = partitionindex }); } return(dal.Get(PubConn, clientid, mqpathpartitionmodel.partitionid)); }
public tb_consumer_partition_model RegisterConsumerPartition(DbConn PubConn, int clientid, int partitionindex,string mqpath, long tempid) { var mqpathmodel = GetMQPath(PubConn, mqpath); tb_mqpath_partition_dal mqpathpartitiondal = new tb_mqpath_partition_dal(); var mqpathpartitionmodel = mqpathpartitiondal.GetOfConsumer(PubConn, partitionindex,mqpathmodel.id); if (mqpathpartitionmodel == null) return null; tb_consumer_partition_dal dal = new tb_consumer_partition_dal(); if (dal.Edit2(PubConn, new tb_consumer_partition_model() { consumerclientid = clientid, lastconsumertempid = tempid, partitionid = mqpathpartitionmodel.partitionid, partitionindex = partitionindex }) <= 0) { var partitionidinfo = PartitionRuleHelper.GetPartitionIDInfo(mqpathpartitionmodel.partitionid); var datanodename = PartitionRuleHelper.GetDataNodeName(partitionidinfo.DataNodePartition); long maxid = -1; DateTime serverdate = PubConn.GetServerDate(); string tablename = PartitionRuleHelper.GetTableName(partitionidinfo.TablePartition,serverdate); SqlHelper.ExcuteSql(this.GetDataNodeConnectString(PubConn, partitionidinfo.DataNodePartition), (c) => { var exist = c.TableIsExist(tablename); if (!exist) { throw new BusinessMQException(string.Format("当前数据节点{0},表{1}不存在", partitionidinfo.DataNodePartition,tablename)); } tb_messagequeue_dal mqdal = new tb_messagequeue_dal(); mqdal.TableName = tablename; maxid = mqdal.GetMaxId(c); if (maxid <= 0) maxid = PartitionRuleHelper.GetMQID(new MQIDInfo() { AutoID=0, DataNodePartition=partitionidinfo.DataNodePartition, Day=serverdate, TablePartition=partitionidinfo.TablePartition }); }); dal.Add2(PubConn, new tb_consumer_partition_model() { consumerclientid = clientid, lastconsumertempid = tempid, lastmqid = maxid, partitionid = mqpathpartitionmodel.partitionid, partitionindex = partitionindex }); } return dal.Get(PubConn, clientid, mqpathpartitionmodel.partitionid); }