Пример #1
0
        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 }));
     }
 }
Пример #4
0
        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));
        }
Пример #5
0
 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);
 }