/// <summary>
        /// Создает экземпляр класса <see cref="DefaultNamingConvention"/>.
        /// </summary>
        /// <param name="serviceInfoAccessor">Предоставляет информацию о сервисе.</param>
        public DefaultNamingConvention(IServiceInfoAccessor serviceInfoAccessor)
        {
            QueueNamingConvention = (messageType, setting) =>
            {
                if (string.IsNullOrWhiteSpace(setting.QueueName))
                {
                    throw new ArgumentNullException(nameof(setting.QueueName), "Наименование очереди не задано.");
                }

                return(setting.UseModelTypeAsSuffix
                    ? $"{setting.QueueName}-{messageType.Name}"
                    : setting.QueueName);
            };

            DeadLetterQueueNamingConvention = (messageType, setting) =>
                                              QueueNamingConvention(messageType, setting) + "-dead-letter";

            DeadLetterExchangeNamingConvention = (type, setting) => "dead-letter";

            DelayedQueueNamingConvention = (messageType, setting, retryDelay) =>
                                           QueueNamingConvention(messageType, setting) + "-" +
                                           retryDelay.TotalSeconds.ToString(CultureInfo.InvariantCulture) + "s-delayed-queue";

            DelayedPublishQueueNamingConvention = (messageType, publishDelay) =>
                                                  messageType.Name + "-" +
                                                  publishDelay.TotalSeconds.ToString(CultureInfo.InvariantCulture) + "s-delayed-publish";

            var rerabbitVersion = "client-version[" + GetType().Assembly.GetName().Version + "]";

            ConsumerTagNamingConvention = (setting, channelNumber, consumerNumberInChannel) =>
                                          string.Join("|",
                                                      serviceInfoAccessor.ServiceInfo.ServiceName,
                                                      "v[" + serviceInfoAccessor.ServiceInfo.ApplicationVersion + "]",
                                                      serviceInfoAccessor.ServiceInfo.HostName,
                                                      serviceInfoAccessor.ServiceInfo.EnvironmentName,
                                                      rerabbitVersion,
                                                      setting.ConsumerName + $"-[{channelNumber}-{consumerNumberInChannel}]"
                                                      );
        }
示例#2
0
 /// <summary>
 /// Создает экземпляр класса <see cref="DefaultClientPropertyProvider"/>.
 /// </summary>
 /// <param name="serviceInfoAccessor">Предоставляет информацию о сервисе.</param>
 public DefaultClientPropertyProvider(IServiceInfoAccessor serviceInfoAccessor)
 {
     _serviceInfoAccessor = serviceInfoAccessor;
 }