Example #1
0
        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));
        }