예제 #1
0
        /// <summary>
        /// Инициализирует отправителя сообщений с определенным адаптером очереди <see cref="IMessageAdapter"/>
        /// </summary>
        /// <param name="adapter">Адаптер сообщений <see cref="IMessageAdapter"/></param>
        /// <param name="callContextFactory">Провайдер контекста вызова</param>
        /// <param name="applicationName">Имя приложения</param>
        public MessageSender(IMessageAdapter adapter, ICallContextFactory callContextFactory, string applicationName)
        {
            _adapter            = adapter.ThrowIfNull(nameof(adapter));
            _callContextFactory = callContextFactory.ThrowIfNull(nameof(callContextFactory));

            _applicationName = applicationName;
        }
예제 #2
0
        /// <summary>
        /// Инициализирует компонент ссылками на <see cref="IMessageAdapter"/>, <see cref="IHealthCheckingService"/>,
        /// коллекции <see cref="IMessageProcessor"/>, <see cref="IMessageProcessorAsync"/>
        /// </summary>
        /// <param name="messageAdapter">Адаптер для работы с очередью</param>
        /// <param name="messageProcessors">Процессоры для обработки сообщения</param>
        /// <param name="asyncMessageProcessors">Асинхронные процессоры для обработки сообщения</param>
        /// <param name="subscribeInterval">Интервал подписки</param>
        /// <param name="pollingId">Идентификатор потока для опроса</param>
        /// <param name="serviceHealthDependent">Признак использования диагностики</param>
        /// <param name="healthCheckingService">Ссылка на службу диагностики</param>
        /// <param name="messagingCallContextAccessor">Контейнер с параметрами вызова для сообщения</param>
        /// <exception cref="ArgumentOutOfRangeException"></exception>
        protected QueuePollingReactorBase(IMessageAdapter messageAdapter,
                                          IEnumerable <IMessageProcessor> messageProcessors,
                                          IEnumerable <IMessageProcessorAsync> asyncMessageProcessors,
                                          int subscribeInterval,
                                          string pollingId,
                                          bool?serviceHealthDependent,
                                          IHealthCheckingService healthCheckingService,
                                          IMessagingCallContextAccessor messagingCallContextAccessor)
        {
            _adapter                = messageAdapter.ThrowIfNull(nameof(messageAdapter));
            _messageProcessors      = messageProcessors.ThrowIfNull(nameof(messageProcessors));
            _asyncMessageProcessors = asyncMessageProcessors.ThrowIfNull(nameof(asyncMessageProcessors));
            if (subscribeInterval <= 0)
            {
                throw new ArgumentOutOfRangeException(nameof(subscribeInterval));
            }
            _healthCheckingService  = healthCheckingService.ThrowIfNull(nameof(serviceHealthDependent));
            _hasDiagnosticErrors    = false;
            _serviceHealthDependent = serviceHealthDependent ?? false;

            _messagingCallContextAccessor = messagingCallContextAccessor;

            _subscribePolling = new Polling(subscribeInterval, pollingId);
        }
예제 #3
0
 /// <summary>
 ///   Конструктор, инициализирующий экземпляр зависимостями
 ///   <see cref="IMessageAdapter" /> и <see cref="IMessageDeserializer" />>
 /// </summary>
 /// <param name="adapter"></param>
 /// <param name="deserializer"></param>
 public MessageReceiver(IMessageAdapter adapter, IMessageDeserializer <TMessage> deserializer)
 {
     _adapter      = adapter.ThrowIfNull(nameof(adapter));
     _deserializer = deserializer.ThrowIfNull(nameof(deserializer));
 }