public IcmTickPriceHarvester(IcmExchangeConfiguration config, IcmModelConverter modelConverter, IHandler <TickPrice> tickPriceHandler, ILog log) { _log = log; _enabled = config.RabbitMq.Enabled; if (!_enabled) { return; } var instruments = config.SupportedCurrencySymbols.Select(x => new Instrument(IcmExchange.Name, x.LykkeSymbol).Name).ToHashSet(); var rabbitSettings = new RabbitMqSubscriptionSettings { ConnectionString = config.RabbitMq.ConnectionString, ExchangeName = config.RabbitMq.Exchange, QueueName = config.RabbitMq.Queue }; var errorStrategy = new DefaultErrorHandlingStrategy(_log, rabbitSettings); _rabbit = new RabbitMqSubscriber <OrderBook>(rabbitSettings, errorStrategy) .SetMessageDeserializer(new GenericRabbitModelConverter <OrderBook>()) .SetMessageReadStrategy(new MessageReadWithTemporaryQueueStrategy()) .SetConsole(new LogToConsole()) .SetLogger(_log) .Subscribe(async orderBook => { if (instruments.Contains(orderBook.Asset)) { var tickPrice = modelConverter.ToTickPrice(orderBook); if (tickPrice != null) { await tickPriceHandler.Handle(tickPrice); } } }); }
private async Task HandleOrderBook(OrderBook orderBook) { if (_instruments.Contains(orderBook.Asset) || _config.UseSupportedCurrencySymbolsAsFilter == false) { var tickPrice = _modelConverter.ToTickPrice(orderBook); if (tickPrice != null) { await _tickPriceHandler.Handle(tickPrice); } await TrySendOrderBook(orderBook); } }