private async Task ProcessMessageAsync(LimitOrders arg) { try { var start = DateTime.UtcNow; var trades = await _tradesConverter.ConvertAsync(arg); if (trades == null || trades.Count == 0) { return; } await _tradesPublisher.PublishAsync(trades); if (DateTime.UtcNow.Subtract(start) > TimeSpan.FromSeconds(10)) { await _log.WriteWarningAsync( nameof(LimitOrdersSubscriberForPublishing), nameof(ProcessMessageAsync), $"Long processing: {arg.ToJson()}"); } } catch (Exception ex) { await _log.WriteErrorAsync(nameof(LimitOrdersSubscriberForPublishing), nameof(ProcessMessageAsync), ex); throw; } }
private async Task ProcessMessageAsync(LimitOrders limitOrders) { try { if (limitOrders.Orders == null || limitOrders.Orders.Count == 0) { return; } string walletId = _settingsService.GetWalletId(); if (string.IsNullOrEmpty(walletId)) { return; } if (limitOrders.Orders.Any(o => o.Order?.ClientId == walletId)) { _log.Info("Message received", context: $"data: {limitOrders.ToJson()}"); } List <LimitOrderWithTrades> clientLimitOrders = limitOrders.Orders .Where(o => o.Order?.ClientId == walletId) .Where(o => o.Trades?.Count > 0) .ToList(); if (!clientLimitOrders.Any()) { return; } _log.Info("LimitOrders received", context: $"{clientLimitOrders.ToJson()}"); IReadOnlyCollection <Trade> trades = ExtractTrades(clientLimitOrders); if (trades.Any()) { await _lykkeTradeService.HandleAsync(trades); } } catch (Exception exception) { _log.Error(exception, "An error occurred during processing trades", limitOrders); } }