コード例 #1
0
 protected override void Cover(MissingDataRecord mdr)
 {
     TaskList.Add(Task.Run(() =>
     {
         base.Cover(mdr);
     }));
 }
コード例 #2
0
 /// <summary>
 /// 回补数据
 /// </summary>
 /// <param name="beginTime">开始时间</param>
 /// <param name="endTime">结束时间</param>
 /// <returns></returns>
 public virtual void Cover(DateTime beginTime, DateTime endTime)
 {
     try
     {
         for (DateTime time = beginTime; time <= endTime; time = time.Add(Interval))
         {
             string[] codes = GetCodes(time);
             foreach (string code in codes)
             {
                 if (!IsSynchronized(code, time))
                 {
                     MissingDataRecord mdr = MDRRepository.FirstOrDefault(EntityName, code, time);
                     if (mdr == null)
                     {
                         Sync(code, time);
                     }
                     else
                     {
                         Cover(mdr);
                     }
                 }
             }
         }
         Add();
     }
     catch (Exception e)
     {
         Logger.Error("Cover failed.", e);
     }
 }
コード例 #3
0
 protected virtual void Sync(DateTime time, string conditions)
 {
     try
     {
         AddEntity(GetSyncData(time, conditions));
     }
     catch (Exception e)
     {
         MissingDataRecord record = new MissingDataRecord(Code, conditions, time, e.Message);
         context.Add(record);
     }
 }
コード例 #4
0
 /// <summary>
 /// 回补数据
 /// </summary>
 /// <param name="mdr">回补记录</param>
 protected virtual void Cover(MissingDataRecord mdr)
 {
     try
     {
         AddEntity(GetCoverData(mdr.Code, mdr.Time));
         mdr.Status = true;
     }
     catch (Exception e)
     {
         mdr.Exception  = e.Message;
         mdr.MissTimes += 1;
     }
 }
コード例 #5
0
 protected virtual void SyncOrCover(DateTime time, string conditions)
 {
     if (!IsSynchronized(time, conditions))
     {
         MissingDataRecord mdr = GetRecord(time, conditions);
         if (mdr == null)
         {
             Sync(time, conditions);
         }
         else
         {
             Cover(mdr);
         }
     }
 }
コード例 #6
0
 /// <summary>
 /// 同步数据
 /// </summary>
 /// <param name="code">编码</param>
 /// <param name="time">时间</param>
 protected virtual void Sync(string code, DateTime time)
 {
     try
     {
         Policy policy = Policy.Handle <Exception>().WaitAndRetry(1, retryAttempt => TimeSpan.FromMinutes(retryAttempt * 1), (exception, timeSpan) =>
         {
             Logger.ErrorFormat("Polly Retry: {0}, {1}, {2}", exception, EntityName, code, time);
         });
         policy.Execute(() => AddEntity(GetSyncData(code, time)));
     }
     catch (Exception e)
     {
         MissingDataRecord record = new MissingDataRecord()
         {
             EntityName = EntityName,
             Code       = code,
             Time       = time,
             Exception  = e.Message
         };
         AddMissingDataRecord(record);
     }
 }
コード例 #7
0
 /// <summary>
 /// 添加回补记录到Sync
 /// </summary>
 /// <param name="record">回补记录</param>
 protected abstract void AddMissingDataRecord(MissingDataRecord record);
コード例 #8
0
 protected virtual IEnumerable <TEntity> GetCoverData(MissingDataRecord mdr)
 {
     return(GetSyncData(mdr.Time, mdr.Conditions));
 }
コード例 #9
0
 protected override void AddMissingDataRecord(MissingDataRecord record)
 {
     MDRList.Add(record);
 }
コード例 #10
0
 protected override void AddMissingDataRecord(MissingDataRecord record)
 {
     MDRQueue.Enqueue(record);
 }