/// <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}]" ); }
/// <summary> /// Создает экземпляр класса <see cref="DefaultClientPropertyProvider"/>. /// </summary> /// <param name="serviceInfoAccessor">Предоставляет информацию о сервисе.</param> public DefaultClientPropertyProvider(IServiceInfoAccessor serviceInfoAccessor) { _serviceInfoAccessor = serviceInfoAccessor; }