예제 #1
0
        public DynamoDbDataStore(DynamoDbConfiguration configuration, ILogger <DynamoDbDataStore> logger, IRangeFilterer <TimeRange> timeFilterer, TripCounterFactory tripCounterFactory)
        {
            _configuration      = configuration;
            _logger             = logger;
            _timeFilterer       = timeFilterer;
            _tripCounterFactory = tripCounterFactory;

            var credentials = new BasicAWSCredentials(configuration.AccessKey, configuration.SecretKey);

            _client  = new AmazonDynamoDBClient(credentials, RegionEndpoint.GetBySystemName(configuration.RegionSystemName));
            _context = new DynamoDBContext(_client);

            _retryPolicy = Policy
                           .Handle <ProvisionedThroughputExceededException>()
                           .WaitAndRetryForeverAsync(i => TimeSpan.Zero, (Action <Exception, TimeSpan>)OnRetry);

            Task.Run(async() =>
            {
                while (true)
                {
                    var timeRanges = Interlocked.Exchange(ref _timeRangesSavedSinceLastCheck, 0);
                    var dataPoints = Interlocked.Exchange(ref _dataPointsSavedSinceLastCheck, 0);

                    _logger.LogDebug($"{timeRanges} timeRanges {dataPoints} dataPoints");
                    await Task.Delay(1000);
                }
            });
        }
예제 #2
0
 public IngestionProcessor(IngestionConfiguration configuration, ILogger <IngestionProcessor> logger, TripCounterFactory tripCounterFactory)
 {
     _configuration      = configuration;
     _logger             = logger;
     _tripCounterFactory = tripCounterFactory;
 }
예제 #3
0
 public SourceSeriesGrain(IModelMapProvider mapProvider, ILogger <SourceSeriesGrain> logger, TripCounterFactory tripCounterFactory)
 {
     _mapProvider        = mapProvider;
     _logger             = logger;
     _tripCounterFactory = tripCounterFactory;
 }