public SagaStateMachineMessageSinkFactory(ISubscriberContext context, ISagaPolicyFactory policyFactory)
 {
     _context       = context;
     _policyFactory = policyFactory;
     _bus           = _context.Data as IServiceBus;
     _repository    = _context.Builder.GetInstance <ISagaRepository <TSaga> >();
 }
 public SagaStateMachineDistributorConnectorFactory(IWorkerSelectorFactory workerSelectorFactory,
                                                    ISagaRepository <TSaga> sagaRepository)
 {
     _workerSelectorFactory = workerSelectorFactory;
     _sagaRepository        = sagaRepository;
     _policyFactory         = new SagaPolicyFactory();
 }
 public CorrelatedSagaWorkerSubscriptionConnector(ISagaRepository <TSaga> sagaRepository,
                                                  DataEvent <TSaga, TMessage> dataEvent,
                                                  IEnumerable <State> states,
                                                  ISagaPolicyFactory policyFactory,
                                                  Expression <Func <TSaga, bool> > removeExpression)
 {
     _connector = new CorrelatedSagaSubscriptionConnector <TSaga, TMessage>(sagaRepository, dataEvent, states,
                                                                            policyFactory, removeExpression);
 }
        public CorrelatedSagaSubscriptionConnector(ISagaRepository <TSaga> sagaRepository, DataEvent <TSaga, TMessage> dataEvent,
                                                   IEnumerable <State> states,
                                                   ISagaPolicyFactory policyFactory,
                                                   Expression <Func <TSaga, bool> > removeExpression)
        {
            _sagaRepository = sagaRepository;
            _dataEvent      = dataEvent;

            _policy = policyFactory.GetPolicy <TSaga, TMessage>(states, x => x.CorrelationId, removeExpression);
        }
示例#5
0
        public SagaEventConnectorFactory(ISagaRepository <TSaga> sagaRepository, ISagaPolicyFactory policyFactory,
                                         DataEvent <TSaga, TMessage> dataEvent, IEnumerable <State> states)
        {
            _sagaRepository = sagaRepository;
            _policyFactory  = policyFactory;
            _dataEvent      = dataEvent;
            _states         = states;

            _removeExpression = SagaStateMachine <TSaga> .GetCompletedExpression();
        }
示例#6
0
 public CorrelatedEventSagaWorkerConnector(ISagaRepository <TSaga> sagaRepository,
                                           DataEvent <TSaga, TMessage> dataEvent,
                                           IEnumerable <State> states,
                                           ISagaPolicyFactory policyFactory,
                                           Expression <Func <TSaga, bool> > removeExpression)
     : base(sagaRepository)
 {
     _dataEvent        = dataEvent;
     _states           = states;
     _policyFactory    = policyFactory;
     _removeExpression = removeExpression;
 }
示例#7
0
 public SagaRunner(ISagaFactory <TS, TD> sagaFactory,
                   ISagaStateService <TS, TD> sagaStateService,
                   ITransactionManager transactionManager,
                   ISagaPolicyFactory <TS> policyFactory,
                   ILogger <SagaRunner <TS, TD> > logger)
 {
     _sagaFactory        = sagaFactory ?? throw new ArgumentNullException(nameof(sagaFactory));
     _sagaStateService   = sagaStateService ?? throw new ArgumentNullException(nameof(sagaStateService));
     _logger             = logger ?? throw new ArgumentNullException(nameof(logger));
     _policyFactory      = policyFactory ?? throw new ArgumentNullException(nameof(policyFactory));
     _transactionManager = transactionManager ?? throw new ArgumentNullException(nameof(transactionManager));
 }
示例#8
0
        public Saga(IWorkerSelectorFactory workerSelectorFactory,
                    ISagaRepository <TSaga> sagaRepository, DataEvent <TSaga, TMessage> dataEvent,
                    IEnumerable <State> states,
                    ISagaPolicyFactory policyFactory,
                    Expression <Func <TSaga, bool> > removeExpression)
        {
            _workerSelectorFactory = workerSelectorFactory;
            _sagaRepository        = sagaRepository;
            _dataEvent             = dataEvent;

            _policy = policyFactory.GetPolicy <TSaga, TMessage>(states, x => x.CorrelationId, removeExpression);
        }
        public PropertySagaSubscriptionConnector(ISagaRepository <TSaga> sagaRepository, DataEvent <TSaga, TMessage> dataEvent,
                                                 IEnumerable <State> states,
                                                 ISagaPolicyFactory policyFactory,
                                                 Expression <Func <TSaga, bool> > removeExpression,
                                                 Expression <Func <TSaga, TMessage, bool> > selector)
        {
            _sagaRepository = sagaRepository;
            _dataEvent      = dataEvent;
            _selector       = selector;

            Func <TMessage, Guid> getNewSagaId = GenerateGetSagaIdFunction(selector);

            _policy = policyFactory.GetPolicy(states, getNewSagaId, removeExpression);
        }
示例#10
0
        public CorrelatedEventSagaDistributorConnector(IWorkerSelectorFactory workerSelectorFactory,
                                                       ISagaRepository <TSaga> sagaRepository,
                                                       DataEvent <TSaga, TMessage> dataEvent,
                                                       IEnumerable <State> states,
                                                       ISagaPolicyFactory policyFactory,
                                                       Expression <Func <TSaga, bool> > removeExpression)
        {
            _workerSelectorFactory = workerSelectorFactory;
            _sagaRepository        = sagaRepository;
            _dataEvent             = dataEvent;

            Func <TMessage, Guid> getNewSagaId = message => message.CorrelationId;

            _policy = policyFactory.GetPolicy(states, getNewSagaId, removeExpression);
        }
        public PropertySagaSubscriptionConnector(ISagaRepository <TSaga> sagaRepository,
                                                 DataEvent <TSaga, TMessage> dataEvent,
                                                 IEnumerable <State> states,
                                                 ISagaPolicyFactory policyFactory,
                                                 Expression <Func <TSaga, bool> > removeExpression,
                                                 IEventBinder <TSaga> eventBinder)
        {
            _sagaRepository = sagaRepository;
            _dataEvent      = dataEvent;

            _bindExpression = eventBinder.GetBindExpression <TMessage>();

            Func <TMessage, Guid> correlationIdSelector = GetCorrelationIdSelector(eventBinder);

            _policy = policyFactory.GetPolicy(states, correlationIdSelector, removeExpression);
        }
        public PropertyEventSagaWorkerConnector(ISagaRepository <TSaga> sagaRepository,
                                                DataEvent <TSaga, TMessage> dataEvent,
                                                IEnumerable <State> states,
                                                ISagaPolicyFactory policyFactory,
                                                Expression <Func <TSaga, bool> > removeExpression,
                                                EventBinder <TSaga> eventBinder)
            : base(sagaRepository)
        {
            _dataEvent        = dataEvent;
            _states           = states;
            _policyFactory    = policyFactory;
            _removeExpression = removeExpression;

            _bindExpression = eventBinder.GetBindExpression <TMessage>();

            _correlationIdSelector = GetCorrelationIdSelector(eventBinder);
        }
 public StateMachineSagaConnector(ISagaRepository <T> sagaRepository)
 {
     _sagaRepository = sagaRepository;
     _policyFactory  = new SagaPolicyFactory();
 }
示例#14
0
 public SagaDistributorSubscriber()
 {
     _policyFactory = new SagaPolicyFactory();
 }
示例#15
0
 public SagaStateMachineWorkerConnectorFactory(ISagaRepository <TSaga> sagaRepository)
 {
     _sagaRepository = sagaRepository;
     _policyFactory  = new SagaPolicyFactory();
 }
示例#16
0
 public SagaEventSubscriber(ISubscriberContext context, ISagaPolicyFactory policyFactory)
 {
     _context       = context;
     _policyFactory = policyFactory;
 }