/// <summary> /// Инициализирует новый экземпляр класса <see cref="QueueRabbitMq" /> /// </summary> /// <param name="factory">Фабрика подключения</param> /// <param name="config">Конфигурация</param> /// <param name="serializer">Сериализатор</param> /// <param name="logger">Логировщик</param> public QueueRabbitMq( ConnectionFactory factory, IConfigurationRabbitMq config, ISerializer serializer, ILogger logger) { if (factory == null) { throw new ArgumentNullException(nameof(factory)); } if (config == null) { throw new ArgumentNullException(nameof(config)); } if (logger == null) { throw new ArgumentNullException(nameof(logger)); } this._factory = factory; this._logger = logger; this._serializer = serializer; this._config = config; this._connection = this.Connect(); this._channel = this.GetСhannel(this._connection); }
/// <summary> /// Установить соединение /// </summary> /// <param name="factory">Фабрика соединений</param> /// <param name="config">Конфигурация</param> /// <returns>Установленное соединение</returns> private IConnection TryToConnect(ConnectionFactory factory, IConfigurationRabbitMq config) { if (this._disposed) { return(null); } factory.HostName = string.IsNullOrEmpty(config.HostName) ? "localhost" : config.HostName; factory.UserName = string.IsNullOrEmpty(config.UserName) ? "guest" : config.UserName; factory.Password = string.IsNullOrEmpty(config.Password) ? "guest" : config.Password; this._logger.Debug($"Начинаем устанавливать соединение к {config.HostName}"); IConnection connection = null; do { try { connection = factory.CreateConnection(); } catch (Exception e) { this._logger.Error($"Ошибка соединения к {config.HostName}", e); // Соединение не удалось делаем паузу Thread.Sleep(this._config.ReconnectInterval); } }while (connection == null || !connection.IsOpen); this._logger.Debug($"Соединение к {config.HostName} установлено."); return(connection); }