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; }
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); } }); }
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; }
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; }
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; }
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; } } }
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); } }
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; }