示例#1
0
        private void ImportEveMarketData(MarketDataImport jobData)
        {
            Client.DefaultRequestHeaders.Accept.Clear();
            Client.DefaultRequestHeaders.Add("Accept", "application/json");

            var expiry = TimeSpan.FromSeconds(60);
            var wait   = TimeSpan.FromSeconds(60);
            var retry  = TimeSpan.FromSeconds(1);

            foreach (var id in jobData.MarketTypeIds)
            {
                var key = $"ImportMarketData-{jobData.RegionId}-{id}";

                using (var distLock = this.DistributedLockRepository.AcquireLock(key, expiry, wait, retry))
                {
                    if (distLock.IsAcquired)
                    {
                        var cacheKey = $"Refresh:{key}";
                        if (this.DistributedKeyValueRepository.Retrieve(cacheKey) != null)
                        {
                            this.AddMessage($"Cache indicates data for region {jobData.RegionId} item {id} fetched recently; skipping.");
                        }
                        else
                        {
                            this.ImportMarketDataForEveType(jobData.RegionId, id);
                            this.DistributedKeyValueRepository.Persist(cacheKey, key, TimeSpan.FromSeconds(300));
                        }
                    }
                    else
                    {
                        throw new ArgumentException("TEMP: Could not acquire redis lock.");
                    }
                }
            }
        }
示例#2
0
        private void ImportEveMarketData(MarketDataImport jobData)
        {
            Client.DefaultRequestHeaders.Accept.Clear();
            Client.DefaultRequestHeaders.Add("Accept", "application/json");
            this.marketOrderCol = this.DbFactory.GetCollection <MarketOrder>(CollectionNames.MarketOrders);

            foreach (var id in jobData.MarketTypeIds)
            {
                this.ImportMarketDataForEveType(jobData.RegionId, id);
            }
        }