Esempio n. 1
0
        /// <summary>
        /// Инициализирует новый экземпляр класса <see cref="SagaConfiguration{TS,TM,TK}"/>.
        /// </summary>
        /// <param name="receiverConfigurator">Конфигурация получателя входящего сообщения.</param>
        /// <param name="sagaRepository">Хранилище саги.</param>
        /// <param name="sagaIdSeparator">Вычислитель идентификатора саги.</param>
        /// <param name="sagaFactory">Фабрика саги.</param>
        /// <param name="sagaStep">Действие выполняемое при обработке саги.</param>
        /// <param name="sagaFailedHandler">Обработчик возникающих ошибок.</param>
        public SagaConfiguration(
            IReceiverConfigurator <TM> receiverConfigurator,
            ISagaRepository <TS, TK> sagaRepository,
            ISagaIdSeparator <TM, TK> sagaIdSeparator,
            ISagaFactory <TS, TK> sagaFactory,
            ISagaStep <TS, TM, TK> sagaStep,
            ISagaFailedHandler <TS, TM, TK> sagaFailedHandler)
        {
            this.receiverConfigurator = receiverConfigurator;

            this.sagaLifecycle = new DefaultSagaLifecycle <TS, TM, TK>(sagaRepository, sagaIdSeparator, sagaFactory);
            this.sagaConsumer  = new SagaConsumerOf <TS, TM, TK>(this.sagaLifecycle, sagaStep, false, sagaFailedHandler);
        }
Esempio n. 2
0
        /// <inheritdoc />
        public ISagaConfigurator <TS, TM, TK> UseSagaIdSeparator(ISagaIdSeparator <TM, TK> sagaIdSeparator)
        {
            this.sagaLifecycle.SagaIdSeparator = sagaIdSeparator;

            return(this);
        }
Esempio n. 3
0
 /// <summary>
 /// Инициализирует новый экземпляр класса <see cref="DefaultSagaLifecycle{TS,TM,TK}"/>.
 /// </summary>
 /// <param name="repository">Хранилище временного состояния саги.</param>
 /// <param name="separator">Вычислитель идентификатора саги из сообщения.</param>
 /// <param name="factory">Фабрика создающая сагу.</param>
 public DefaultSagaLifecycle(ISagaRepository <TS, TK> repository, ISagaIdSeparator <TM, TK> separator, ISagaFactory <TS, TK> factory)
 {
     this.SagaRepository  = repository;
     this.SagaIdSeparator = separator;
     this.SagaFactory     = factory;
 }