public async Task AddCandleAsync(CandlesModel candles, CancellationToken cancellationToken = default) { try { var tasks = candles.CandleCollection.Select(r => _distributedCache.SetStringAsync($"{_PREFIX}:{candles.CurrencyName}:{candles.TimeFrame}:{r.ReceiptTime}", JsonConvert.SerializeObject(r))); await Task.WhenAll(tasks); } catch (Exception ex) { _logger.LogError(ex, $"При добавление свечей в cache возникла ошибка"); } }
public async Task ReceiveAndPublishCandleAsync(string pairName, int frame) { try { var bitfinexCandles = (await _candlesHistory.GetCandleHistoryAsync(pairName, frame)).ToList(); var candlesModel = new CandlesModel { CurrencyName = pairName, TimeFrame = frame, CandleCollection = _mapper.Map <IList <CandleModel> >(bitfinexCandles) }; await _publisher.PublishAsync($"candle", candlesModel, BusMessageType.Candles); } catch (Exception ex) { _logger.LogError(ex, "В процессе получения и публикации свечи произошла ошибка"); } }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { var data = JArray.Load(reader); var result = new CandlesModel(); if (data.Count >= 2) { result.ChannelId = (int)data[0]; result.CandleCollection = new List <CandleModel>(); if (((JArray)data[1]).Count > 6) { result.CandleCollection = data[1].Select(r => CreateCandle((JArray)r)) .ToList(); } else { result.CandleCollection = new CandleModel[] { CreateCandle((JArray)data[1]) }; result.StockTime = DateTime.UnixEpoch.AddMilliseconds((long)data[2]); } } return(result); }