private void _queryRunner_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { if (timerElapsedEventInProgress == false) { timerElapsedEventInProgress = true; timerTriggerCount = 0; try { List <TableCopier> configSettings = MongoDbDal.GetListOfTableCopiers(); foreach (var tab in configSettings) { tab.ImportNextBatch(); } } catch (Exception ex) { Log.Error(ex); } } else { timerTriggerCount++; if (timerTriggerCount >= maxNumberOfRetries) { timerTriggerCount = 0; timerElapsedEventInProgress = false; } } }
protected override void OnStart(string[] args) { try { Log.Info("******Started Running the Query Scheduler*****"); TypeMap = Helper.InitializeTypeHash(); //_queryRunner.Interval = int.Parse(ConfigurationManager.AppSettings["ScheduleInterval"]); _queryRunner.Interval = 5000; _queryRunner.Elapsed += _queryRunner_Elapsed;; MongoDbDal.MongoDB_Initialize(); try { List <TableCopier> configSettings = MongoDbDal.GetListOfTableCopiers(); foreach (var tab in configSettings) { tab.ImportNextBatch(); } } catch (Exception ex) { Log.Error(ex); } _queryRunner.Start(); } catch (Exception ex) { Log.Error(ex); } }
public void ImportNextBatch() { DataTable sourceData = GetTableDataWithFitler(); if (sourceData.Rows.Count == 0) { return; } DataRow[] successfullInserts = null; if (sourceData != null) { successfullInserts = SaveDataTableDestinationDb(sourceData); switch (CopyType) { case TableCopyType.StatusBased: //Updating the source table with a flag to indicate that these records are already migrated so that we dont create duplicate records in the next iteration UpdateSourceTableWithSuccessFlag(successfullInserts); break; case TableCopyType.SequenceBased: var te1 = successfullInserts.OrderByDescending(z => int.Parse(z.Field <string>("FDATE"))).ThenByDescending(z => int.Parse(z.Field <string>("FTIME"))); break; case TableCopyType.TimeStampBased: var te = successfullInserts.OrderByDescending(z => int.Parse(z.Field <string>("FDATE"))).ThenByDescending(z => int.Parse(z.Field <string>("FTIME"))); LastSyncDate = te.First().Field <string>("FDATE"); LastSyncTime = te.First().Field <string>("FTIME"); MongoDbDal.UpdateLastSyncDateTime(CopierId, LastSyncDate, LastSyncTime); break; default: break; } } else { Log.Info(" could not get data from source table: " + SourceTableName); } }