public HumanInterfaceConnector(IApplicationStateStore <TPartition> applicationStateStore,
                                       IEnumerable <ISideEffectsHandler> sideEffectsHandlers,
                                       IMessageSession rootMessageSession,
                                       IDispatchMessages dispatcher,
                                       ITransactionInProgressStore transactionInProgressStore,
                                       IMessageStore messageStore)
        {
            this.applicationStateStore      = applicationStateStore;
            this.rootMessageSession         = rootMessageSession;
            this.transactionInProgressStore = transactionInProgressStore;
            this.messageStore = messageStore;

            var allHandlers = sideEffectsHandlers.Concat(new ISideEffectsHandler[]
            {
                new WebMessagingWithClaimCheckSideEffectsHandler(messageStore, dispatcher),
                new TransactionInProgressSideEffectHandler(transactionInProgressStore),
            });

            processor = new ExactlyOnceProcessor <object>(allHandlers.ToArray(), new NServiceBusDebugLogger());
        }
        public static IHostBuilder UseAtomicCommitMessageSession <T>(this IHostBuilder hostBuilder,
                                                                     IApplicationStateStore <T> applicationStateContainer,
                                                                     ITransactionInProgressStore transactionInProgressStore,
                                                                     IMessageStore messageStore)
        {
            hostBuilder.ConfigureServices((ctx, serviceCollection) =>
            {
                serviceCollection.AddSingleton <IHumanInterfaceConnector <T> >(serviceProvider =>
                {
                    var dispatcher         = serviceProvider.GetService <IDispatchMessages>();
                    var rootMessageSession = serviceProvider.GetService <IMessageSession>();

                    var connector = new HumanInterfaceConnector <T>(applicationStateContainer, new ISideEffectsHandler[0],
                                                                    rootMessageSession, dispatcher, transactionInProgressStore, messageStore);
                    return(connector);
                });
            });


            return(hostBuilder);
        }
예제 #3
0
 public TransactionInProgressSideEffectHandler(ITransactionInProgressStore transactionInProgressStore)
 {
     this.transactionInProgressStore = transactionInProgressStore;
 }