public void Start()
        {
            var settings = new RabbitMqSubscriptionSettings
            {
                ConnectionString = _settings.ConnectionString,
                ExchangeName     = _settings.ExchangeName,
                QueueName        = _settings.QueueName,
                IsDurable        = true
            };

            var errorHandlingStrategy = new ResilientErrorHandlingStrategy(_logFactory,
                                                                           settings,
                                                                           retryTimeout: TimeSpan.FromSeconds(10),
                                                                           next: new DeadQueueErrorHandlingStrategy(_logFactory, settings));

            _subscriber = new RabbitMqSubscriber <HistoryOperation>(_logFactory, settings,
                                                                    errorHandlingStrategy)
                          .SetMessageDeserializer(new JsonMessageDeserializer <HistoryOperation>())
                          .SetMessageReadStrategy(new MessageReadQueueStrategy())
                          .Subscribe(ProcessMessageAsync)
                          .CreateDefaultBinding()
                          .Start();

            _log.Info($"<< {nameof(HistoryOperationSubscruber)} is started.");
        }
        public void SetUp()
        {
            RabbitMqSubscriptionSettings settings = new RabbitMqSubscriptionSettings
            {
                QueueName = "QueueName"
            };

            _strategy = new ResilientErrorHandlingStrategy(EmptyLogFactory.Instance, settings, TimeSpan.FromMilliseconds(5));
        }
        public void Start()
        {
            var settings = RabbitMqSubscriptionSettings
                           .CreateForSubscriber(_settings.ConnectionString,
                                                _settings.InvoiceConfirmationExchangeName, "invoiceconfirmation")
                           .MakeDurable();

            settings.DeadLetterExchangeName = null;

            var errorHandlingStrategy = new ResilientErrorHandlingStrategy(_logFactory, settings,
                                                                           retryTimeout: TimeSpan.FromSeconds(10),
                                                                           next: new DeadQueueErrorHandlingStrategy(_logFactory, settings));

            _subscriber = new RabbitMqSubscriber <InvoiceConfirmation>(_logFactory,
                                                                       settings, errorHandlingStrategy)
                          .SetMessageDeserializer(new JsonMessageDeserializer <InvoiceConfirmation>())
                          .SetMessageReadStrategy(new MessageReadQueueStrategy())
                          .Subscribe(ProcessMessageAsync)
                          .CreateDefaultBinding()
                          .Start();

            _log.Info($"<< {nameof(InvoiceConfirmationSubscriber)} is started.");
        }
        public void Start()
        {
            {
                var settings = new RabbitMqSubscriptionSettings
                {
                    ConnectionString       = _rabbitMqSettings.ConnectionString,
                    QueueName              = QueueName,
                    ExchangeName           = _rabbitMqSettings.ExchangeEthereumEvents,
                    DeadLetterExchangeName = $"{_rabbitMqSettings.ExchangeEthereumEvents}.dlx",
                    RoutingKey             = "",
                    IsDurable              = true
                };

                try
                {
                    var resilentErrorHandlingStrategyEth = new ResilientErrorHandlingStrategy(_logFactory, settings,
                                                                                              retryTimeout: TimeSpan.FromSeconds(10),
                                                                                              retryNum: 10,
                                                                                              next: new DeadQueueErrorHandlingStrategy(_logFactory, settings));

                    _subscriber = new RabbitMqSubscriber <CoinEvent>(_logFactory, settings, resilentErrorHandlingStrategyEth)
                                  .SetMessageDeserializer(new JsonMessageDeserializer <CoinEvent>())
                                  .SetMessageReadStrategy(new MessageReadQueueStrategy())
                                  .SetAlternativeExchange(settings.ConnectionString)
                                  .SetDeduplicator(MongoStorageDeduplicator.Create(_deduplicatorSettings.ConnectionString, _deduplicatorSettings.CollectionName))
                                  .Subscribe(SendEventToCqrs)
                                  .CreateDefaultBinding()
                                  .Start();
                }
                catch (Exception ex)
                {
                    _log.Error(ex);
                    throw;
                }
            }

            #region HotWallet

            {
                string exchangeName = $"{_rabbitMqSettings.ExchangeEthereumEvents}.hotwallet";
                var    settings     = new RabbitMqSubscriptionSettings
                {
                    ConnectionString       = _rabbitMqSettings.ConnectionString,
                    QueueName              = HotWalletQueueName,
                    ExchangeName           = exchangeName,
                    DeadLetterExchangeName = $"{exchangeName}.dlx",
                    RoutingKey             = "",
                    IsDurable              = true
                };

                var resilentErrorHandlingStrategyEth = new ResilientErrorHandlingStrategy(_logFactory, settings,
                                                                                          retryTimeout: TimeSpan.FromSeconds(10),
                                                                                          retryNum: 10,
                                                                                          next: new DeadQueueErrorHandlingStrategy(_logFactory, settings));

                try
                {
                    _subscriberHotWallet = new RabbitMqSubscriber <HotWalletEvent>(_logFactory, settings,
                                                                                   resilentErrorHandlingStrategyEth)
                                           .SetMessageDeserializer(new JsonMessageDeserializer <HotWalletEvent>())
                                           .SetMessageReadStrategy(new MessageReadQueueStrategy())
                                           .SetAlternativeExchange(settings.ConnectionString)
                                           .SetDeduplicator(MongoStorageDeduplicator.Create(_deduplicatorSettings.ConnectionString, _deduplicatorSettings.CollectionName))
                                           .Subscribe(SendHotWalletEventToCqrs)
                                           .CreateDefaultBinding()
                                           .Start();
                }
                catch (Exception ex)
                {
                    _log.Error(ex);
                    throw;
                }
            }

            #endregion
        }