public void SagaMessage <T>(Action <ISagaMessageConfigurator <TSaga, T> > configure) where T : class { if (configure == null) { throw new ArgumentNullException(nameof(configure)); } ISagaMessageSpecification <TSaga, T> specification = GetMessageSpecification <T>(); configure(specification); }
public ConnectHandle ConnectSaga(IConsumePipeConnector consumePipe, ISagaRepository <TSaga> repository, ISagaSpecification <TSaga> specification) { ISagaMessageSpecification <TSaga, TMessage> messageSpecification = specification.GetMessageSpecification <TMessage>(); IPipe <SagaConsumeContext <TSaga, TMessage> > consumerPipe = messageSpecification.BuildConsumerPipe(_consumeFilter); IPipe <ConsumeContext <TMessage> > messagePipe = messageSpecification.BuildMessagePipe(x => { ConfigureMessagePipe(x, repository, consumerPipe); }); return(consumePipe.ConnectConsumePipe(messagePipe)); }