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);
            }
        }