/// <summary> /// Initializes a new instance of the <see cref="SagaMediator"/> class. /// </summary> /// <param name="sagaRepository">The saga repository.</param> /// <param name="sagaFactory">The saga factory.</param> /// <param name="pipelineHooks">The pipeline hooks.</param> public SagaMediator(ISagaRepository sagaRepository, ISagaFactory sagaFactory, IEnumerable <IPipelineHook> pipelineHooks) { Guard.ArgumentIsNotNull(sagaRepository, nameof(sagaRepository)); Guard.ArgumentIsNotNull(sagaFactory, nameof(sagaFactory)); Guard.ArgumentIsNotNull(pipelineHooks, nameof(pipelineHooks)); this.sagaRepository = sagaRepository; this.sagaFactory = sagaFactory; this.pipelineHook = new CompositePipelineHook(pipelineHooks); }
/// <summary> /// Initiates an instance of <see cref="SqlSagaRepository"/> with a connection string name. /// Actual connection string is taken from your app.config or web.config /// </summary> /// <param name="connectionFactory">An insantance implementing <see cref="IConnectionFactory"/></param> /// <param name="sagaFactory">An instance implementing <see cref="ISagaFactory"/></param> /// <param name="messageSerialiser">An instance implementing <see cref="IMessageSerialiser"/></param> public SqlSagaRepository(IConnectionFactory connectionFactory, ISagaFactory sagaFactory, IMessageSerialiser messageSerialiser) { Guard.ArgumentIsNotNull(connectionFactory, nameof(connectionFactory)); Guard.ArgumentIsNotNull(sagaFactory, nameof(sagaFactory)); Guard.ArgumentIsNotNull(messageSerialiser, nameof(messageSerialiser)); this.messageSerialiser = messageSerialiser; this.sagaFactory = sagaFactory; this.connectionFactory = connectionFactory; }
/// <summary> /// Initiates an instance of <see cref="SqlSagaRepository"/> with a connection string name. /// Actual connection string is taken from your app.config or web.config /// </summary> /// <param name="connectionFactory">An insantance implementing <see cref="IConnectionFactory"/></param> /// <param name="sagaFactory">An instance implementing <see cref="ISagaFactory"/></param> /// <param name="messageSerialiser">An instance implementing <see cref="IMessageSerialiser"/></param> public SqlSagaRepository(ISagaSqlDatabase database, ISagaFactory sagaFactory, IMessageSerialiser messageSerialiser) { Guard.ArgumentIsNotNull(database, nameof(database)); Guard.ArgumentIsNotNull(sagaFactory, nameof(sagaFactory)); Guard.ArgumentIsNotNull(messageSerialiser, nameof(messageSerialiser)); this.messageSerialiser = messageSerialiser; this.sagaFactory = sagaFactory; this.database = database; }
/// <summary> /// Initializes a new instance of the <see cref="AzureTablesSagaRepository"/> class. /// </summary> /// <param name="tableClientFactory">The table client factory.</param> /// <param name="messageSerialiser">The message serialiser.</param> /// <param name="sagaFactory">The saga factory.</param> public AzureTablesSagaRepository(ITableClientFactory tableClientFactory, IMessageSerialiser messageSerialiser, ISagaFactory sagaFactory) { Guard.ArgumentIsNotNull(tableClientFactory, nameof(tableClientFactory)); Guard.ArgumentIsNotNull(sagaFactory, nameof(sagaFactory)); Guard.ArgumentIsNotNull(messageSerialiser, nameof(messageSerialiser)); this.tableClientFactory = tableClientFactory; this.messageSerialiser = messageSerialiser; this.sagaFactory = sagaFactory; }
public OrderFulfillmentSagaManager(IEventManager eventManager, ISagaFactory sagaFactory) { _eventManager = eventManager; _sagaFactory = sagaFactory; _sagas = new Dictionary <string, IOrderFulfillmentSaga>(); _handleSagaLock = new object(); SagasChanged = delegate { }; SubscribeToEvents(); }
public OrderFulfillmentSagaManager(IEventManager eventManager, ISagaFactory sagaFactory) { _eventManager = eventManager; _sagaFactory = sagaFactory; _sagas = new Dictionary<string, IOrderFulfillmentSaga>(); _handleSagaLock = new object(); SagasChanged = delegate { }; SubscribeToEvents(); }
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)); }
public MassTransitEventCorrelation(SagaStateMachine <TInstance> machine, Event <TData> @event, SagaFilterFactory <TInstance, TData> sagaFilterFactory, IFilter <ConsumeContext <TData> > messageFilter, IPipe <ConsumeContext <TData> > missingPipe, ISagaFactory <TInstance, TData> sagaFactory, bool insertOnInitial) { _event = @event; FilterFactory = sagaFilterFactory; _messageFilter = messageFilter; _missingPipe = missingPipe; _sagaFactory = sagaFactory; _insertOnInitial = insertOnInitial; _machine = machine; _policy = new Lazy <ISagaPolicy <TInstance, TData> >(GetSagaPolicy); }
/// <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); }
public MassTransitEventCorrelationConfigurator(SagaStateMachine <TInstance> machine, Event <TData> @event, EventCorrelation existingCorrelation) { _event = @event; _machine = machine; _insertOnInitial = false; _sagaFactory = new DefaultSagaFactory <TInstance, TData>(); var correlation = existingCorrelation as EventCorrelation <TInstance, TData>; if (correlation != null) { _sagaFilterFactory = correlation.FilterFactory; _messageFilter = correlation.MessageFilter; } }
/// <summary> /// Initiates an instance of <see cref="SqlSagaRepository"/> with a connection string name. /// Actual connection string is taken from your app.config or web.config /// </summary> /// <param name="connectionFactory">An insantance implementing <see cref="IConnectionFactory"/></param> /// <param name="sagaFactory">An instance implementing <see cref="ISagaFactory"/></param> /// <param name="messageSerialiser">An instance implementing <see cref="IMessageSerialiser"/></param> public SqlSagaRepository(IConnectionFactory connectionFactory, ISagaFactory sagaFactory, IMessageSerialiser messageSerialiser) { Guard.ArgumentIsNotNull(connectionFactory, nameof(connectionFactory)); Guard.ArgumentIsNotNull(sagaFactory, nameof(sagaFactory)); Guard.ArgumentIsNotNull(messageSerialiser, nameof(messageSerialiser)); this.messageSerialiser = messageSerialiser; this.sagaFactory = sagaFactory; this.connectionFactory = connectionFactory; if (connectionFactory.ConnectionIsToMySql()) { this.queryWrapper = new MySqlQueryWrapper(); } else { this.queryWrapper = new SqlQueryWrapper(); } }
public void Register <TMessage>(ISagaFactory <TSaga, TMessage> factory) { Register(typeof(TMessage), m => factory.Create((TMessage)m)); }
public IEventCorrelationConfigurator <TInstance, TData> SetSagaFactory(SagaFactoryMethod <TInstance, TData> factoryMethod) { _sagaFactory = new FactoryMethodSagaFactory <TInstance, TData>(factoryMethod); return(this); }
public SagaEventStoreRepositoryEx(IStoreEvents eventStore, ISagaFactory factory) { _eventStore = eventStore; _factory = factory; }
/// <summary> /// Override the provided implementation of ISagaFactory with given instance /// </summary> /// <param name="sagaFactory">The saga factory instance</param> /// <returns>Current Builder for fluent configuration.</returns> public SagaMediatorBuilder UseSagaFactory(ISagaFactory sagaFactory) { Container.Register(typeof(ISagaFactory), sagaFactory); return(this); }
/// <summary> /// Initializes a new instance of the <see cref="InMemorySagaRepository"/> class. /// </summary> /// <param name="messageSerialiser">The message serialiser.</param> /// <param name="sagaFactory">The saga factory.</param> public InMemorySagaRepository(IMessageSerialiser messageSerialiser, ISagaFactory sagaFactory) { this.messageSerialiser = messageSerialiser; this.sagaFactory = sagaFactory; }
/// <inheritdoc /> public ISagaConfigurator <TS, TM, TK> UseSagaFactory(ISagaFactory <TS, TK> sagaFactory) { this.sagaLifecycle.SagaFactory = sagaFactory; return(this); }
public InstanceSagaActor(ISagaFactory <ISagaInstance, TStartMessage> sagaStarter, ISagaFactory <ISagaInstance, SagaDataAggregate <TData> > sagaFactory, IEmptySagaFactory <ISagaInstance> emptySagaFactory, IPublisher publisher) : base(sagaStarter, sagaFactory, emptySagaFactory, publisher) { }
/// <inheritdoc /> /// <summary> /// Create with factory. /// </summary> /// <param name="factory"></param> protected WithSaga(ISagaFactory <TInput, TOutput> factory) : this( factory.ErrorHandlerStrategy, factory.Delay, factory.RetryStrategy, factory.GeneralAspect, factory.Before, factory.After) { }
/// <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; }
/// <summary> /// Инициализирует новый экземпляр класса <see cref="InMemorySagaRepository{TS,TK}"/>. /// </summary> /// <param name="sagaFactory">Фабрика саг используемая для создания саги возвращаемой из хранилища.</param> public InMemorySagaRepository(ISagaFactory <TS, TK> sagaFactory) { this.sagaFactory = sagaFactory; }
public EfSagaRepository(Func <TDomain> contextFactory, ISagaFactory sagaFactory) { _sagaFactory = sagaFactory; _contextFactory = contextFactory; }
public SagasTestController(ISagaFactory sagaFactory) { this.sagaFactory = sagaFactory; }
public NewOrExistingSagaPolicy(ISagaFactory <TSaga, TMessage> sagaFactory, bool insertOnInitial) { _sagaFactory = sagaFactory; _insertOnInitial = insertOnInitial; }
public FastSagaRepository(ISagaFactory sagaFactory) { this.sagaFactory = sagaFactory; }