示例#1
0
        private async Task CreateAndProcessJobsAsync()
        {
            _log.Info($"IncrementalExtractionService.CreateAndProcessJobsAsync execute: {DateTime.Now}");

            //get the last job from DB, use the later time between job.EndTime and _startOptions.StartTime to be the cutoffStartTime
            var latestJob = await _jobAndTaskService.GetLatestJobAsync();

            // takes the later date from the two
            var cutoffStartTime = (latestJob != null && latestJob.EndTime > _startOptions.StartTime) ? latestJob.EndTime : _startOptions.StartTime;

            //don't get data that is less than 3 days old, so  we don't lose any data
            var cutOffEndTime = DateTime.Now.AddHours(-72);

            var newJobStartTime = cutoffStartTime;
            var newJobEndTime   = newJobStartTime.AddHours(_startOptions.TimeIntervalInHours);

            while (newJobEndTime <= cutOffEndTime)
            {
                var success =
                    await _jobManager.CreateAndProcessJobsAsync(newJobStartTime, newJobEndTime);

                if (!success)
                {
                    _log.Info($"IncrementalExtractionService.CreateAndProcessJobsAsync: something went wrong while creating new job startTime-{newJobStartTime}, endTime-{newJobEndTime}, refer to JobManager log entry for more details.");
                    break;
                }

                newJobStartTime = newJobEndTime;
                newJobEndTime   = newJobStartTime.AddHours(_startOptions.TimeIntervalInHours);
            }
        }