コード例 #1
0
        public virtual tb_partition_messagequeue_report_model CreateModel(DataRow dr)
        {
            var o = new tb_partition_messagequeue_report_model();

            //
            if(dr.Table.Columns.Contains("id"))
            {
                o.id = dr["id"].Toint();
            }
            //�������
            if(dr.Table.Columns.Contains("partitionid"))
            {
                o.partitionid = dr["partitionid"].Toint();
            }
            //����
            if(dr.Table.Columns.Contains("day"))
            {
                o.day = dr["day"].ToDateTime();
            }
            //���������Ϣid
            if(dr.Table.Columns.Contains("mqmaxid"))
            {
                o.mqmaxid = dr["mqmaxid"].Tolong();
            }
            //mq��С��Ϣid
            if(dr.Table.Columns.Contains("mqminid"))
            {
                o.mqminid = dr["mqminid"].Tolong();
            }
            //��Ϣ����
            if(dr.Table.Columns.Contains("mqcount"))
            {
                o.mqcount = dr["mqcount"].Toint();
            }
            //��ǰ����ɨ��������ʱ��
            if(dr.Table.Columns.Contains("lastupdatetime"))
            {
                o.lastupdatetime = dr["lastupdatetime"].ToDateTime();
            }
            //��ǰ����ɨ�贴��ʱ��
            if(dr.Table.Columns.Contains("createtime"))
            {
                o.createtime = dr["createtime"].ToDateTime();
            }
            return o;
        }
コード例 #2
0
 public bool AddReport(DbConn conn, tb_partition_messagequeue_report_model model)
 {
     return SqlHelper.Visit((ps) =>
      {
      string sql = "SELECT ID from tb_partition_messagequeue_report WITH(NOLOCK) WHERE partitionid=@partitionid AND day=@day";
      ps.Add("@partitionid", model.partitionid);
      ps.Add("@day", model.day);
      object obj = conn.ExecuteScalar(sql, ps.ToParameters());
      if (obj != DBNull.Value && obj != null)
      {
          int id = Convert.ToInt32(obj);
          return this.UpdateMsgCount(conn, model.mqmaxid, model.mqminid, model.mqcount, id);
      }
      else
      {
          return Add2(conn, model);
      }
      });
 }
コード例 #3
0
        public virtual bool Edit2(DbConn PubConn, tb_partition_messagequeue_report_model model)
        {
            List<ProcedureParameter> Par = new List<ProcedureParameter>()
            {

                    //分区编号
                    new ProcedureParameter("@partitionid",    model.partitionid),
                    //日期
                    new ProcedureParameter("@day",    model.day),
                    //分区最大消息id
                    new ProcedureParameter("@mqmaxid",    model.mqmaxid),
                    //mq最小消息id
                    new ProcedureParameter("@mqminid",    model.mqminid),
                    //消息数量
                    new ProcedureParameter("@mqcount",    model.mqcount),
            };
            Par.Add(new ProcedureParameter("@id", model.id));

            int rev = PubConn.ExecuteSql("update tb_partition_messagequeue_report set partitionid=@partitionid,day=@day,mqmaxid=@mqmaxid,mqminid=@mqminid,mqcount=@mqcount,lastupdatetime=getdate() where id=@id", Par);
            return rev == 1;
        }
コード例 #4
0
        public virtual bool Add2(DbConn PubConn, tb_partition_messagequeue_report_model model)
        {
            List<ProcedureParameter> Par = new List<ProcedureParameter>()
                {

                    //分区编号
                    new ProcedureParameter("@partitionid",    model.partitionid),
                    //日期
                    new ProcedureParameter("@day",    model.day),
                    //分区最大消息id
                    new ProcedureParameter("@mqmaxid",    model.mqmaxid),
                    //mq最小消息id
                    new ProcedureParameter("@mqminid",    model.mqminid),
                    //消息数量
                    new ProcedureParameter("@mqcount",    model.mqcount),
                    ////当前分区扫描最后更新时间
                    //new ProcedureParameter("@lastupdatetime",    model.lastupdatetime),
                    ////当前分区扫描创建时间
                    //new ProcedureParameter("@createtime",    model.createtime)
                };
            int rev = PubConn.ExecuteSql(@"insert into tb_partition_messagequeue_report(partitionid,day,mqmaxid,mqminid,mqcount,lastupdatetime,createtime)
                                           values(@partitionid,@day,@mqmaxid,@mqminid,@mqcount,getdate(),getdate())", Par);
            return rev == 1;
        }
コード例 #5
0
        public virtual bool Add(DbConn PubConn, tb_partition_messagequeue_report_model model)
        {
            List<ProcedureParameter> Par = new List<ProcedureParameter>()
                {

                    //�������
                    new ProcedureParameter("@partitionid",    model.partitionid),
                    //����
                    new ProcedureParameter("@day",    model.day),
                    //���������Ϣid
                    new ProcedureParameter("@mqmaxid",    model.mqmaxid),
                    //mq��С��Ϣid
                    new ProcedureParameter("@mqminid",    model.mqminid),
                    //��Ϣ����
                    new ProcedureParameter("@mqcount",    model.mqcount),
                    //��ǰ����ɨ��������ʱ��
                    new ProcedureParameter("@lastupdatetime",    model.lastupdatetime),
                    //��ǰ����ɨ�贴��ʱ��
                    new ProcedureParameter("@createtime",    model.createtime)
                };
            int rev = PubConn.ExecuteSql(@"insert into tb_partition_messagequeue_report(partitionid,day,mqmaxid,mqminid,mqcount,lastupdatetime,createtime)
                                           values(@partitionid,@day,@mqmaxid,@mqminid,@mqcount,@lastupdatetime,@createtime)", Par);
            return rev == 1;
        }
コード例 #6
0
ファイル: StatisticsTask.cs プロジェクト: xwx2015/MQ
        public override void Run()
        {
            List<tb_datanode_model> nodeList = new List<tb_datanode_model>();
            List<tb_partition_model> list = new List<tb_partition_model>();

            using (DbConn conn = DbConfig.CreateConn(this.AppConfig["BusinessMQManageConnectString"]))
            {
                conn.Open();
                nodeList = dataNodeDal.List(conn);
                list = partitionDal.GetAllCanUsePartitionList(conn);
            }

            foreach (var item in nodeList)
            {
                string dataNode = PartitionRuleHelper.GetDataNodeName(item.datanodepartition);
                string nodeConn = string.Format("server={0};Initial Catalog={1};User ID={2};Password={3};", item.serverip, dataNode, item.username, item.password);

                try
                {
                    using (DbConn dataNodeConn = DbConfig.CreateConn(nodeConn))
                    {
                        dataNodeConn.Open();
                        foreach (var value in list)
                        {
                            PartitionIDInfo info = PartitionRuleHelper.GetPartitionIDInfo(value.partitionid);
                            string partition = PartitionRuleHelper.PartitionNameRule(info.TablePartition);
                            ICollection<string> tableList = msgDal.GetTableNameListByPartition(dataNodeConn, partition);
                            if (tableList != null && tableList.Count > 0)
                            {
                                using (DbConn conn = DbConfig.CreateConn(this.AppConfig["BusinessMQManageConnectString"]))
                                {
                                    foreach (var table in tableList)
                                    {
                                        if (!dataNodeConn.TableIsExist(table))
                                        {
                                            continue;
                                        }
                                        long maxId = msgDal.GetMaxID(dataNodeConn, table);
                                        long minId = msgDal.GetMinID(dataNodeConn, table);
                                        tb_partition_messagequeue_report_model model = new tb_partition_messagequeue_report_model();
                                        model.partitionid = value.partitionid;
                                        if (maxId > 0 && minId > 0)
                                        {
                                            MQIDInfo mqInfo = PartitionRuleHelper.GetMQIDInfo(maxId);
                                            model.day = mqInfo.Day;
                                            model.lastupdatetime = DateTime.Now;
                                            model.createtime = DateTime.Now;
                                            model.mqmaxid = maxId;
                                            model.mqminid = minId;
                                            reportDal.AddReport(conn, model);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    base.OpenOperator.Error("节点不存在", ex);
                    continue;
                }
            }
        }
コード例 #7
0
        public override void Run()
        {
            ConfigHelper.LoadConfig(this.AppConfig["BusinessMQManageConnectString"]);

            List<tb_datanode_model> nodeList = new List<tb_datanode_model>();

            using (DbConn conn = DbConfig.CreateConn(this.AppConfig["BusinessMQManageConnectString"]))
            {
                conn.Open();
                List<tb_partition_model> createTimeList = new tb_consumer_dal().GetClientCreateTime(conn);
                var serverdate = conn.GetServerDate().Date; var timenow = conn.GetServerDate();
                nodeList = new tb_datanode_dal().List(conn);
                List<Exception> exps = new List<Exception>();
                foreach (var item in nodeList)
                {
                    try
                    {
                        string dataNode = PartitionRuleHelper.GetDataNodeName(item.datanodepartition);
                        string nodeConn = string.Format("server={0};Initial Catalog={1};User ID={2};Password={3};", item.serverip, dataNode, item.username, item.password);
                        string partitionId = PartitionRuleHelper.PartitionNameRule(item.datanodepartition);
                        string t = PartitionRuleHelper.GetDataNodeName(item.datanodepartition);

                        using (DbConn dataNodeConn = DbConfig.CreateConn(nodeConn))
                        {
                            dataNodeConn.Open();
                            var tablesinfo = new tb_messagequeue_dal().GetDataNodeTable(dataNodeConn, serverdate.AddDays(-30));
                            foreach (var table in tablesinfo)
                            {
                                string tablename = XXF.BaseService.MessageQuque.BusinessMQ.SystemRuntime.PartitionRuleHelper.GetTableName(table.TablePartition, table.Day);

                                TableInfo info = PartitionRuleHelper.GetTableInfo(tablename);
                                var beginId = XXF.BaseService.MessageQuque.BusinessMQ.SystemRuntime.PartitionRuleHelper.GetMQID(new MQIDInfo() { AutoID = 0, DataNodePartition = item.datanodepartition, Day = table.Day, TablePartition = table.TablePartition });

                                int mqPartitionId = PartitionRuleHelper.GetPartitionID(new PartitionIDInfo() { DataNodePartition = item.datanodepartition, TablePartition = table.TablePartition });
                                tb_partition_model timeModel = createTimeList.Where(q => q.partitionid == mqPartitionId).FirstOrDefault();
                                DateTime time = DateTime.Parse("2015-01-01");
                                if (timeModel != null)
                                {
                                    time = timeModel.createtime;
                                }
                                var dal = new tb_messagequeue_dal(); dal.TableName = tablename;

                                int count = dal.GetCount(dataNodeConn, time);
                                long maxId = dal.GetMaxID(dataNodeConn, time); maxId = (maxId == 0 ? beginId : maxId);
                                long minId = dal.GetMinID(dataNodeConn, time); minId = (minId == 0 ? beginId : minId);
                                tb_partition_messagequeue_report_model model = new tb_partition_messagequeue_report_model();
                                model.partitionid = XXF.BaseService.MessageQuque.BusinessMQ.SystemRuntime.PartitionRuleHelper.GetPartitionID(new PartitionIDInfo() { DataNodePartition = item.datanodepartition, TablePartition = table.TablePartition });

                                MQIDInfo mqInfo = PartitionRuleHelper.GetMQIDInfo(maxId);
                                model.day = mqInfo.Day;
                                model.lastupdatetime = timenow;
                                model.createtime = timenow;
                                model.mqmaxid = maxId;
                                model.mqminid = minId;
                                model.mqcount = count;
                                new tb_partition_messagequeue_report_dal().AddReport(conn, model);
                            }

                        }
                    }
                    catch (Exception exp)
                    {
                        exps.Add(exp);
                    }

                }
                Error(this.AppConfig["BusinessMQManageConnectString"], "消息统计出错", exps);
            }
        }
コード例 #8
0
        public virtual bool Edit(DbConn PubConn, tb_partition_messagequeue_report_model model)
        {
            List<ProcedureParameter> Par = new List<ProcedureParameter>()
            {

                    //�������
                    new ProcedureParameter("@partitionid",    model.partitionid),
                    //����
                    new ProcedureParameter("@day",    model.day),
                    //���������Ϣid
                    new ProcedureParameter("@mqmaxid",    model.mqmaxid),
                    //mq��С��Ϣid
                    new ProcedureParameter("@mqminid",    model.mqminid),
                    //��Ϣ����
                    new ProcedureParameter("@mqcount",    model.mqcount),
                    //��ǰ����ɨ��������ʱ��
                    new ProcedureParameter("@lastupdatetime",    model.lastupdatetime),
                    //��ǰ����ɨ�贴��ʱ��
                    new ProcedureParameter("@createtime",    model.createtime)
            };
            Par.Add(new ProcedureParameter("@id",  model.id));

            int rev = PubConn.ExecuteSql("update tb_partition_messagequeue_report set partitionid=@partitionid,day=@day,mqmaxid=@mqmaxid,mqminid=@mqminid,mqcount=@mqcount,lastupdatetime=@lastupdatetime,createtime=@createtime where id=@id", Par);
            return rev == 1;
        }