Exemple #1
0
        private async Task <IList <INumericRangeBlockContext> > GetNumericRangeBlocksAsync(ITaskExecutionContext taskExecutionContext)
        {
            using (var cs = taskExecutionContext.CreateCriticalSection())
            {
                if (await cs.TryStartAsync())
                {
                    long startNumber;
                    var  lastBlock = await taskExecutionContext.GetLastNumericRangeBlockAsync(LastBlockOrder.LastCreated);

                    var maxJourneyId = await _travelDataService.GetMaxJourneyIdAsync();

                    // if this is the first run then just process the last 1000
                    if (lastBlock == null)
                    {
                        startNumber = maxJourneyId - 1000;
                    }
                    // if there is no new data then just return any old blocks that have failed or died
                    else if (lastBlock.EndNumber == maxJourneyId)
                    {
                        return(await taskExecutionContext.GetNumericRangeBlocksAsync(x => x.OnlyOldNumericBlocks()));
                    }
                    // startNumber is the next unprocessed id
                    else
                    {
                        startNumber = lastBlock.EndNumber + 1;
                    }

                    int maxBlockSize = 500;
                    return(await taskExecutionContext.GetNumericRangeBlocksAsync(x => x.WithRange(startNumber, maxJourneyId, maxBlockSize)));
                }
                throw new Exception("Could not acquire a critical section, aborted task");
            }
        }
        private IList<IDateRangeBlockContext> GetDateRangeBlocks(ITaskExecutionContext taskExecutionContext)
        {
            using (var cs = taskExecutionContext.CreateCriticalSection())
            {
                if (cs.TryStart())
                {
                    var startDate = GetDateRangeStartDate(taskExecutionContext);
                    var endDate = DateTime.Now;

                    return taskExecutionContext.GetDateRangeBlocks(x => x.WithRange(startDate, endDate, TimeSpan.FromMinutes(30)));
                }
                throw new Exception("Could not acquire a critical section, aborted task");
            }
        }
Exemple #3
0
        private IList <IDateRangeBlockContext> GetDateRangeBlocks(ITaskExecutionContext taskExecutionContext)
        {
            using (var cs = taskExecutionContext.CreateCriticalSection())
            {
                if (cs.TryStart())
                {
                    var startDate = GetDateRangeStartDate(taskExecutionContext);
                    var endDate   = DateTime.Now;

                    return(taskExecutionContext.GetDateRangeBlocks(x => x.WithRange(startDate, endDate, TimeSpan.FromMinutes(30))));
                }
                throw new Exception("Could not acquire a critical section, aborted task");
            }
        }
        private IList<IListBlockContext<Journey, BatchDatesHeader>> GetListBlocks(ITaskExecutionContext taskExecutionContext)
        {
            using (var cs = taskExecutionContext.CreateCriticalSection())
            {
                if (cs.TryStart())
                {
                    var startDate = GetDateRangeStartDate(taskExecutionContext);
                    var endDate = DateTime.Now;

                    var journeys = _travelDataService.GetJourneys(startDate, endDate).ToList();
                    var batchHeader = new BatchDatesHeader()
                    {
                        FromDate = startDate,
                        ToDate = endDate
                    };

                    short blockSize = 500;
                    return taskExecutionContext.GetListBlocks<Journey, BatchDatesHeader>(x => x.WithPeriodicCommit(journeys, batchHeader, blockSize, BatchSize.Fifty));
                }
                throw new Exception("Could not acquire a critical section, aborted task");
            }
        }
Exemple #5
0
        private IList <IListBlockContext <Journey, BatchDatesHeader> > GetListBlocks(ITaskExecutionContext taskExecutionContext)
        {
            using (var cs = taskExecutionContext.CreateCriticalSection())
            {
                if (cs.TryStart())
                {
                    var startDate = GetDateRangeStartDate(taskExecutionContext);
                    var endDate   = DateTime.Now;

                    var journeys    = _travelDataService.GetJourneys(startDate, endDate).ToList();
                    var batchHeader = new BatchDatesHeader()
                    {
                        FromDate = startDate,
                        ToDate   = endDate
                    };

                    short blockSize = 500;
                    return(taskExecutionContext.GetListBlocks <Journey, BatchDatesHeader>(x => x.WithPeriodicCommit(journeys, batchHeader, blockSize, BatchSize.Fifty)));
                }
                throw new Exception("Could not acquire a critical section, aborted task");
            }
        }