/// <summary> /// Инициализирует компонент ссылками на <see cref="IConfiguration" />, /// <see cref="IMessageAdapterFactory" />, /// коллекции элементов <see cref="IMessageSerializer" /> и <see cref="IMessageDeserializer" />> /// </summary> /// <param name="configuration">Провайдер конфигурации</param> /// <param name="adapterFactory">Фабрика адаптеров для очередей</param> /// <param name="serializers">Коллекция сериализаторов</param> /// <param name="deserializers">Коллекция десериализаторов</param> public MessagingComponentFactory( IConfiguration configuration, IMessageAdapterFactory adapterFactory, IReadOnlyCollection <IMessageSerializer> serializers, IReadOnlyCollection <IMessageDeserializer> deserializers, ICallContextFactory callContextFactory) { _adapterFactory = adapterFactory.ThrowIfNull(nameof(adapterFactory)); _serializers = serializers.ThrowIfNull(nameof(serializers)); _deserializers = deserializers.ThrowIfNull(nameof(deserializers)); _callContextFactory = callContextFactory.ThrowIfNull(nameof(callContextFactory)); _connectionOptions = configuration.ThrowIfNull(nameof(configuration)) .GetSection("messaging") .Get <MessagingConfiguration>(); }
/// <summary> /// Инициализирует экземпляр класса ссылками на <see cref="IMessageAdapterFactory" />, /// <see cref="IHealthCheckingService" />, /// коллекции элементов <see cref="IProcessor" /> и <see cref="IProcessorAsync" /> /// </summary> /// <param name="messageAdapterFactory"></param> /// <param name="messageProcessors"></param> /// <param name="asyncMessageProcessors"></param> /// <param name="healthCheckingService"></param> public QueueReactorFactory( IMessageAdapterFactory messageAdapterFactory, IEnumerable <IProcessor> messageProcessors, IEnumerable <IProcessorAsync> asyncMessageProcessors, IHealthCheckingService healthCheckingService, IMessagingCallContextAccessor messagingCallContextAccessor) { _messageAdapterFactory = messageAdapterFactory.ThrowIfNull(nameof(messageAdapterFactory)); _processors = messageProcessors.ThrowIfNull(nameof(messageProcessors)); _asyncProcessors = asyncMessageProcessors.ThrowIfNull(nameof(asyncMessageProcessors)); _healthCheckingService = healthCheckingService.ThrowIfNull(nameof(healthCheckingService)); _messagingCallContextAccessor = messagingCallContextAccessor.ThrowIfNull(nameof(messagingCallContextAccessor)); LogProcessors(_processors.ToList(), _asyncProcessors.ToList()); }
/// <summary> /// Инициализирует экземпляр класса ссылками на <see cref="IMessageAdapterFactory" />, /// <see cref="IHealthCheckingService" />, /// коллекции элементов <see cref="IProcessor" /> и <see cref="IProcessorAsync" /> /// </summary> /// <param name="messageAdapterFactory">Адаптер обмена сообщениями</param> /// <param name="messageProcessors">Процессоры для обработки сообщения</param> /// <param name="asyncMessageProcessors">Асинхронные процессоры для обработки сообщения</param> /// <param name="healthCheckingService">Ссылка на службу диагностики</param> /// <param name="messagingCallContextAccessor">Ссылка на объект для доступа к контексту вызова</param> /// <param name="loggerFactory">Фабрика логгирования</param> public QueueReactorFactory( IMessageAdapterFactory messageAdapterFactory, IEnumerable <IProcessor> messageProcessors, IEnumerable <IProcessorAsync> asyncMessageProcessors, IHealthCheckingService healthCheckingService, IMessagingCallContextAccessor messagingCallContextAccessor, ILoggerFactory loggerFactory) { _logger = loggerFactory.CreateLogger <QueueReactorFactory>(); _messageAdapterFactory = messageAdapterFactory; _processors = messageProcessors; _asyncProcessors = asyncMessageProcessors; _healthCheckingService = healthCheckingService; _messagingCallContextAccessor = messagingCallContextAccessor; _loggerFactory = loggerFactory; LogProcessors(); }