static void Main(string[] args) { //SystemCode.HexNumberToDenary("FC27", false, 16, 's'); //启动解析线程 TcpDataProcesser dataProcess = new TcpDataProcesser(); Thread m_thread = new Thread(new ThreadStart(dataProcess.Processing)); m_thread.Start(); //启动清除过期数据线程 //FlushProcesser flushProcess = new FlushProcesser(); //Thread m_thread2 = new Thread(new ThreadStart(flushProcess.Processing)); //m_thread2.Start(); //启动持久化线程 PersistentProcesser persistProcess = new PersistentProcesser(); Thread m_thread3 = new Thread(new ThreadStart(persistProcess.Processing)); m_thread3.Start(); //DataProcess.DataProcessingEmail(); LogUtil.info("数据解析服务启动成功!"); string strLine; do { strLine = Console.ReadLine(); } while (strLine != null && strLine != "exit"); LogUtil.info("正在退出数据解析服务..."); LogUtil.info("持久化剩余缓存数据..."); //持久化尚未持久化的缓存数据后退出 persistProcess.peristentData(); LogUtil.info("剩余数据持久化完成..."); //kill thread if (m_thread.IsAlive) { m_thread.Abort(); } if (m_thread3.IsAlive) { m_thread3.Abort(); } }
int memcahcednum = 0;//缓存次数,完成两次缓存,进行一次持久化数据 /// <summary> /// 每一批次的最后处理 /// </summary> private void lastHandle() { if (DateTime.Now < lastCacheTime.AddMinutes(cache_interval)) { return; } Console.WriteLine("开始缓存数据到Memcached"); DateTime curdt = DateTime.Now; DateTime totaldt = DateTime.Now; //将内存中得数据放入缓存 CacheHandler.CacheData(); //最后批处理采集器最大值 try { DeviceDataCountService.GetInstance().CacheCollectorCount(collectorDataCounts); LogUtil.info("CacheCollectorCount 完成:" + collectorDataCounts.Count); //电站统计,必须保证所有采集器都在,即每次都统计完整的电站单元,所以不能清空。 collectorDataCounts.Clear(); } catch (Exception ddccache) { LogUtil.error("CacheCollectorCount异常:" + ddccache.Message); } //最后处理发电量统计 try { CacheHandler.CacheCountData(deviceEnergyMap, collectorEnergyMap); } catch (Exception ddccache) { LogUtil.error("CacheCollectorCount异常:" + ddccache.Message); } LogUtil.writeline("缓存到memcache处理用时:" + (DateTime.Now.Subtract(curdt).TotalSeconds) + "秒,统计:待处理数量" + AnalyzeCount.curWaittotal + ",总共处理:" + AnalyzeCount.curtotal + ",成功:" + AnalyzeCount.curSuccessNum + ",失败:" + AnalyzeCount.curFailNum + ",最近数据发送时间:" + AnalyzeCount.lasttime.ToString("yyyy-MM-dd HH:mm:ss")); lastCacheTime = DateTime.Now; memcahcednum++; if (memcahcednum == 3) { //进行持久化 PersistentProcesser.peristentData(); memcahcednum = 0; } }
static void Main(string[] args) { //SystemCode.HexNumberToDenary("FC27", false, 16, 's'); //启动解析线程 TcpDataProcesser dataProcess = new TcpDataProcesser(); Thread m_thread = new Thread(new ThreadStart(dataProcess.Processing)); m_thread.Start(); //启动清除过期数据线程 //FlushProcesser flushProcess = new FlushProcesser(); //Thread m_thread2 = new Thread(new ThreadStart(flushProcess.Processing)); //m_thread2.Start(); //启动持久化线程 PersistentProcesser persistProcess = new PersistentProcesser(); Thread m_thread3 = new Thread(new ThreadStart(persistProcess.Processing)); m_thread3.Start(); //DataProcess.DataProcessingEmail(); LogUtil.info("数据解析服务启动成功!"); string strLine; do { strLine = Console.ReadLine(); } while (strLine != null && strLine != "exit"); LogUtil.info("正在退出数据解析服务..."); LogUtil.info("持久化剩余缓存数据..."); //持久化尚未持久化的缓存数据后退出 persistProcess.peristentData(); LogUtil.info("剩余数据持久化完成..."); //kill thread if (m_thread.IsAlive) m_thread.Abort(); if (m_thread3.IsAlive) m_thread3.Abort(); }