/// <summary>
 ///   Инициализирует экземпляр переменной типа <see cref="QueueConfigurationBase" />
 ///   и признаком необходимости проводить диагностику
 /// </summary>
 /// <param name="configuration">Конфигурация очереди</param>
 /// <param name="isDiagnostic">Признак проведения диагностики</param>
 public RabbitMqQueueMessageAdapter(RabbitMqQueueConfiguration configuration, bool isDiagnostic)
 {
     _configuration  = configuration.ThrowIfNull(nameof(configuration));
     _connectionLock = new object();
     _isDisposed     = false;
     _isDiagnostic   = isDiagnostic;
 }
Example #2
0
 /// <summary>
 ///   Инициализирует экземпляр фабрикой, создающей <see cref="IAdvancedBus" />,
 ///   переменной типа <see cref="QueueConfigurationBase" />
 ///   и признаком необходимости проводить диагностику
 /// </summary>
 /// <param name="advancedBusFactory">Фабрика для создания <see cref="IAdvancedBus" /></param>
 /// <param name="configuration">Конфигурация очереди</param>
 /// <param name="logger">Интерфейс логгирования</param>
 public RabbitMqQueueMessageAdapter(
     IAdvancedBusFactory advancedBusFactory,
     RabbitMqQueueConfiguration configuration,
     ILogger <RabbitMqQueueMessageAdapter> logger)
 {
     _logger             = logger;
     _advancedBusFactory = advancedBusFactory;
     _configuration      = configuration;
 }
Example #3
0
        private static string GetExpiration(BaseMessage message, RabbitMqQueueConfiguration configuration)
        {
            if (message.LifeTime.TotalMilliseconds > 0)
            {
                return(message.LifeTime.TotalMilliseconds.ToString(CultureInfo.InvariantCulture));
            }

            if (configuration.Lifetime.HasValue)
            {
                return(((int)configuration.Lifetime.Value.TotalMilliseconds).ToString(CultureInfo.InvariantCulture));
            }

            return(DefaultLifeTime);
        }
Example #4
0
        public static MessageProperties ConvertToProperties(this BaseMessage message, RabbitMqQueueConfiguration configuration)
        {
            var expiration = GetExpiration(message, configuration);

            var properties = new MessageProperties
            {
                MessageId = string.IsNullOrEmpty(message.MessageId)
          ? Guid.NewGuid()
                            .ToString()
                            .ToUpper()
          : message.MessageId,
                Headers      = message.Properties,
                DeliveryMode = 2,
                Expiration   = expiration,
                Timestamp    = DateTime.Now.ToFileTimeUtc(),
                ContentType  = GetContentType(message)
            };

            if (!string.IsNullOrWhiteSpace(message.ReplyQueue))
            {
                properties.ReplyTo = message.ReplyQueue;
            }

            if (!string.IsNullOrEmpty(message.CorrelationId))
            {
                properties.CorrelationId = message.CorrelationId;
            }

            return(properties);
        }