/// <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; }
/// <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); }
/// <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)); }