public SagaStateMachineDistributorConnectorFactory(IWorkerSelectorFactory workerSelectorFactory, ISagaRepository <TSaga> sagaRepository) { _workerSelectorFactory = workerSelectorFactory; _sagaRepository = sagaRepository; _policyFactory = new SagaPolicyFactory(); }
public HandlerDistributorConnector(ReferenceFactory referenceFactory, IWorkerSelectorFactory workerSelectorFactory) { _referenceFactory = referenceFactory; _messageConnector = new MessageDistributorConnector <TMessage>(workerSelectorFactory); }
public ConsumerDistributorConnector(ReferenceFactory referenceFactory, IWorkerSelectorFactory workerSelectorFactory) { _workerSelectorFactory = workerSelectorFactory; _referenceFactory = referenceFactory; Type[] interfaces = typeof(T).GetInterfaces(); if (interfaces.Contains(typeof(ISaga))) { throw new ConfigurationException("A saga cannot be registered as a consumer"); } if (interfaces.Implements(typeof(InitiatedBy <>)) || interfaces.Implements(typeof(Orchestrates <>)) || interfaces.Implements(typeof(Observes <,>))) { throw new ConfigurationException("InitiatedBy, Orchestrates, and Observes can only be used with sagas"); } _connectors = ConsumesSelectedContext() .Concat(ConsumesContext()) .Concat(ConsumesSelected()) .Concat(ConsumesAll()) .Distinct((x, y) => x.MessageType == y.MessageType) .ToList(); }
public ObservesSagaDistributorConnector(IWorkerSelectorFactory workerSelectorFactory, ISagaRepository<TSaga> sagaRepository) { _workerSelectorFactory = workerSelectorFactory; _sagaRepository = sagaRepository; // TODO get expression to compare and get Guids for saga instances }
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 T UseWorkerSelector( Func <IWorkerSelectorFactory> workerSelectorFactory) { _workerSelectorFactory = () => { IWorkerSelectorFactory factory = workerSelectorFactory(); _workerSelectorFactory = () => factory; return(factory); }; return(this as T); }
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 PropertyEventSagaDistributorConnector(IWorkerSelectorFactory workerSelectorFactory, ISagaRepository <TSaga> sagaRepository, DataEvent <TSaga, TMessage> dataEvent, IEnumerable <State> states, ISagaPolicyFactory policyFactory, Expression <Func <TSaga, bool> > removeExpression, EventBinder <TSaga> eventBinder) { _workerSelectorFactory = workerSelectorFactory; _sagaRepository = sagaRepository; _dataEvent = dataEvent; _bindExpression = eventBinder.GetBindExpression <TMessage>(); Func <TMessage, Guid> correlationIdSelector = GetCorrelationIdSelector(eventBinder); _policy = policyFactory.GetPolicy(states, correlationIdSelector, removeExpression); }
public CorrelatedSagaDistributorConnector(IWorkerSelectorFactory workerSelectorFactory, ISagaRepository <TSaga> sagaRepository) { _workerSelectorFactory = workerSelectorFactory; _sagaRepository = sagaRepository; }