public static void Run(UnityContainer container)
        {
            container.RegisterType <StoreFrontController>();
            container.RegisterInstance(typeof(ILog), LogProvider.For <StoreService>(), new ContainerControlledLifetimeManager());
            container.RegisterType <AddOrderCommandHandler>();
            container.RegisterType <AddProductCommandHandler>();
            container.RegisterType <ChangeProductCommandHandler>();
            container.RegisterType <RemoveProductCommandHandler>();
            container.RegisterType <IProductsDAO, ProductsDAO>();

            var logger         = container.Resolve <ILog>();
            var handlerFactory = new UnityHandlerFactory(container);

            var subscriberRegistry = new SubscriberRegistry();

            subscriberRegistry.Register <AddOrderCommand, AddOrderCommandHandler>();
            subscriberRegistry.Register <AddProductCommand, AddProductCommandHandler>();
            subscriberRegistry.Register <ChangeProductCommand, ChangeProductCommandHandler>();
            subscriberRegistry.Register <RemoveProductCommand, RemoveProductCommandHandler>();

            //create policies
            var retryPolicy = Policy
                              .Handle <Exception>()
                              .WaitAndRetry(new[]
            {
                TimeSpan.FromMilliseconds(50),
                TimeSpan.FromMilliseconds(100),
                TimeSpan.FromMilliseconds(150)
            });

            var circuitBreakerPolicy = Policy
                                       .Handle <Exception>()
                                       .CircuitBreaker(1, TimeSpan.FromMilliseconds(500));

            var policyRegistry = new PolicyRegistry()
            {
                { CommandProcessor.RETRYPOLICY, retryPolicy },
                { CommandProcessor.CIRCUITBREAKER, circuitBreakerPolicy }
            };

            var messageMapperFactory  = new UnityMessageMapperFactory(container);
            var messageMapperRegistry = new MessageMapperRegistry(messageMapperFactory);

            messageMapperRegistry.Register <AddOrderCommand, AddOrderCommandMessageMapper>();

            var gateway = new RmqMessageProducer(container.Resolve <ILog>());
            var dbPath  = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase.Substring(8)), "App_Data\\MessageStore.sdf");

            IAmAMessageStore <Message> sqlMessageStore = new MsSqlMessageStore(new MsSqlMessageStoreConfiguration("DataSource=\"" + dbPath + "\"", "Messages", MsSqlMessageStoreConfiguration.DatabaseType.SqlCe), logger);

            var commandProcessor = CommandProcessorBuilder.With()
                                   .Handlers(new HandlerConfiguration(subscriberRegistry, handlerFactory))
                                   .Policies(policyRegistry)
                                   .Logger(logger)
                                   .TaskQueues(new MessagingConfiguration(sqlMessageStore, gateway, messageMapperRegistry))
                                   .RequestContextFactory(new InMemoryRequestContextFactory())
                                   .Build();

            container.RegisterInstance(typeof(IAmACommandProcessor), commandProcessor);
        }
        public static void Run(UnityContainer container)
        {
            container.RegisterType <FeedController>();
            container.RegisterType <ProductsController>();
            container.RegisterInstance(typeof(ILog), LogProvider.For <ProductService>(), new ContainerControlledLifetimeManager());
            container.RegisterType <IProductsDAO, ProductsDAO>();
            container.RegisterType <AddProductCommandHandler>();
            container.RegisterType <ChangeProductCommandHandler>();
            container.RegisterType <ProductAddedEventHandler>();
            container.RegisterType <ProductChangedEventHandler>();
            container.RegisterType <ProductRemovedEventHandler>();
            container.RegisterType <RemoveProductCommandHandler>();

            var handlerFactory = new UnityHandlerFactory(container);

            var subscriberRegistry = new SubscriberRegistry
            {
                { typeof(AddProductCommand), typeof(AddProductCommandHandler) },
                { typeof(ChangeProductCommand), typeof(ChangeProductCommandHandler) },
                { typeof(RemoveProductCommand), typeof(RemoveProductCommandHandler) },
                { typeof(ProductAddedEvent), typeof(ProductAddedEventHandler) },
                { typeof(ProductRemovedEvent), typeof(ProductRemovedEventHandler) },
            };

            //create policies
            var retryPolicy = Policy
                              .Handle <Exception>()
                              .WaitAndRetry(new[]
            {
                TimeSpan.FromMilliseconds(50),
                TimeSpan.FromMilliseconds(100),
                TimeSpan.FromMilliseconds(150)
            });

            var circuitBreakerPolicy = Policy
                                       .Handle <Exception>()
                                       .CircuitBreaker(1, TimeSpan.FromMilliseconds(500));

            var policyRegistry = new PolicyRegistry()
            {
                { CommandProcessor.RETRYPOLICY, retryPolicy },
                { CommandProcessor.CIRCUITBREAKER, circuitBreakerPolicy }
            };


            var commandProcessor = CommandProcessorBuilder.With()
                                   .Handlers(new HandlerConfiguration(subscriberRegistry, handlerFactory))
                                   .Policies(policyRegistry)
                                   .Logger(container.Resolve <ILog>())
                                   .NoTaskQueues()
                                   .RequestContextFactory(new InMemoryRequestContextFactory())
                                   .Build();

            container.RegisterInstance(typeof(IAmACommandProcessor), commandProcessor);
        }
示例#3
0
        private static paramore.brighter.commandprocessor.CommandProcessor CreateCommandProcesor(UnityContainer container)
        {
            var logger         = container.Resolve <ILog>();
            var handlerFactory = new UnityHandlerFactory(container);

            var subscriberRegistry = new SubscriberRegistry();

            subscriberRegistry.Register <AddOrganizationCommand, AddOrganizationCommandHandler>();
            //subscriberRegistry.Register<AddOrganizationCommand, AddEFOrganisationCommandHandler>();

            subscriberRegistry.Register <ChangeOrganizationCommand, ChangeOrganizationCommandHandler>();
            subscriberRegistry.Register <OrganizationAddedEvent, OrganizationAddedEventHandler>();
            subscriberRegistry.Register <OrganizationAddedEvent, OrganizationAddedLegacyEventHandler>();

            //create retry policies
            var retryPolicy = Policy
                              .Handle <Exception>()
                              .WaitAndRetry(new[]
            {
                TimeSpan.FromMilliseconds(50),
                TimeSpan.FromMilliseconds(100),
                TimeSpan.FromMilliseconds(150)
            });

            //create circuit breaker policies
            var circuitBreakerPolicy = Policy
                                       .Handle <Exception>()
                                       .CircuitBreaker(1, TimeSpan.FromMilliseconds(500));

            var policyRegistry = new PolicyRegistry()
            {
                { paramore.brighter.commandprocessor.CommandProcessor.RETRYPOLICY, retryPolicy },
                { paramore.brighter.commandprocessor.CommandProcessor.CIRCUITBREAKER, circuitBreakerPolicy }
            };


            var messageMapperFactory  = new UnityMessageMapperFactory(container);
            var messageMapperRegistry = new MessageMapperRegistry(messageMapperFactory);

            messageMapperRegistry.Register <AddOrganizationCommand, AddOrganizationCommandMessageMapper>();
            string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
            var    gateway          = new RmqMessageProducer(container.Resolve <ILog>());
            IAmAMessageStore <Message> sqlMessageStore = new MsSqlMessageStore(new MsSqlMessageStoreConfiguration(connectionString, "Messages", MsSqlMessageStoreConfiguration.DatabaseType.MsSqlServer), logger);

            var commandProcessor = CommandProcessorBuilder.With()
                                   .Handlers(new HandlerConfiguration(subscriberRegistry, handlerFactory))
                                   .Policies(policyRegistry)
                                   .TaskQueues(new MessagingConfiguration(sqlMessageStore, gateway, messageMapperRegistry))
                                   .RequestContextFactory(new InMemoryRequestContextFactory())
                                   .Build();

            return(commandProcessor);
        }
示例#4
0
        private static Dispatcher BuildDispatcher()
        {
            var container      = new UnityContainer();
            var handlerFactory = new UnityHandlerFactory(container);
            // var asyncHandlerFactory = new UnityAsyncHandlerFactory(container);
            var messageMapperFactory = new UnityMessageMapperFactory(container);

            container.RegisterType <IHandleRequests <GreetingEvent>, GreetingEventHandler>();

            var subscriberRegistry = new SubscriberRegistry();

            subscriberRegistry.Register <GreetingEvent, GreetingEventHandler>();
            subscriberRegistry.Register <GreetingCommand, GreetingCommandHandler>();

            //create message mappers
            var messageMapperRegistry = new MessageMapperRegistry(messageMapperFactory)
            {
                { typeof(GreetingEvent), typeof(GreetingEventMessageMapper) }
            };

            var connectionString       = @"Database=BrighterSqlQueue;Server=localhost;Integrated Security=SSPI;";
            var gatewayConfig          = new MsSqlMessagingGatewayConfiguration(connectionString, "QueueData");
            var messageConsumerFactory = new MsSqlMessageConsumerFactory(gatewayConfig);
            var commandProcessor       = CommandProcessorBuilder.With()
                                         .Handlers(new HandlerConfiguration(subscriberRegistry, handlerFactory))
                                         .DefaultPolicy()
                                         .NoTaskQueues()
                                         .RequestContextFactory(new InMemoryRequestContextFactory())
                                         .Build();
            var dispatcher = DispatchBuilder.With()
                             .CommandProcessor(commandProcessor)
                             .MessageMappers(messageMapperRegistry)
                             .DefaultChannelFactory(new MsSqlInputChannelFactory(messageConsumerFactory))
                             .Connections(new Connection[]
            {
                new Connection <GreetingEvent>(
                    new ConnectionName("paramore.example.greeting"),
                    new ChannelName("greeting.event"),
                    new RoutingKey("greeting.event"),
                    timeoutInMilliseconds: 200)
            }
                                          ).Build();

            container.RegisterInstance <IAmACommandProcessor>(commandProcessor);
            container.RegisterType <IHandleRequests <GreetingCommand>, GreetingCommandHandler>();
            container.RegisterType <MyValidationHandler <GreetingCommand>, GreetingCommandValidationHandler>();
            container.RegisterType <MyPostAuditHandler <GreetingCommand>, GreetingCommandPostAuditHandler>();

            return(dispatcher);
        }
        private static paramore.brighter.commandprocessor.CommandProcessor CreateCommandProcesor(UnityContainer container)
        {
            var logger         = container.Resolve <ILog>();
            var handlerFactory = new UnityHandlerFactory(container);

            var subscriberRegistry = new SubscriberRegistry();

            subscriberRegistry.Register <AddOrganizationCommand, AddOrganizationCommandHandler>();
            //subscriberRegistry.Register<AddOrganizationCommand, AddEFOrganisationCommandHandler>();

            subscriberRegistry.Register <ChangeOrganizationCommand, ChangeOrganizationCommandHandler>();
            subscriberRegistry.Register <OrganizationAddedEvent, OrganizationAddedEventHandler>();
            subscriberRegistry.Register <OrganizationAddedEvent, OrganizationAddedLegacyEventHandler>();

            //create retry policies
            var retryPolicy = Policy
                              .Handle <Exception>()
                              .WaitAndRetry(new[]
            {
                TimeSpan.FromMilliseconds(50),
                TimeSpan.FromMilliseconds(100),
                TimeSpan.FromMilliseconds(150)
            });

            //create circuit breaker policies
            var circuitBreakerPolicy = Policy
                                       .Handle <Exception>()
                                       .CircuitBreaker(1, TimeSpan.FromMilliseconds(500));

            var policyRegistry = new PolicyRegistry()
            {
                { paramore.brighter.commandprocessor.CommandProcessor.RETRYPOLICY, retryPolicy },
                { paramore.brighter.commandprocessor.CommandProcessor.CIRCUITBREAKER, circuitBreakerPolicy }
            };

            var commandProcessor = CommandProcessorBuilder.With()
                                   .Handlers(new HandlerConfiguration(subscriberRegistry, handlerFactory))
                                   .Policies(policyRegistry)
                                   .NoTaskQueues()
                                   .RequestContextFactory(new InMemoryRequestContextFactory())
                                   .Build();

            return(commandProcessor);
        }
示例#6
0
        public static void Run(UnityContainer container)
        {
            container.RegisterType <DomainController>();
            container.RegisterType <FeedController>();
            container.RegisterType <JoinController>();
            container.RegisterType <MessageController>();
            container.RegisterType <PipeController>();
            container.RegisterType <IAmARepository <Domain>, InMemoryDomainRepository>(new ContainerControlledLifetimeManager());
            container.RegisterType <IAmARepository <Feed>, InMemoryFeedRepository>(new ContainerControlledLifetimeManager());
            container.RegisterType <IAmARepository <Pipe>, InMemoryPipeRepository>(new ContainerControlledLifetimeManager());
            container.RegisterType <IAmARepository <Join>, InMemoryJoinRepository>(new ContainerControlledLifetimeManager());
            container.RegisterType <IAmACredentialStore, CredentialStore>(new ContainerControlledLifetimeManager());
            container.AddNewExtension <Log4NetExtension>();
            container.RegisterType <AddFeedCommandHandler>();
            container.RegisterType <AddFeedToDomainCommandHandler>();
            container.RegisterType <AddJoinCommandHandler>();
            container.RegisterType <AddJoinToFeedCommandHandler>();
            container.RegisterType <AddJoinToPipeCommandHandler>();
            container.RegisterType <AddMessageToFeedCommandHandler>();
            container.RegisterType <AddPipeCommandHandler>();
            container.RegisterType <AddPipeToDomainCommandHandler>();
            container.RegisterType <DeleteFeedCommandHandler>();
            container.RegisterType <DeleteMessageCommandHandler>();
            container.RegisterType <DeletePipeCommandHandler>();
            container.RegisterType <RemoveFeedFromDomainCommandHandler>();
            container.RegisterType <CacheCleaningHandler>();

            var handlerFactory = new UnityHandlerFactory(container);

            var subscriberRegistry = new SubscriberRegistry
            {
                { typeof(AddFeedCommand), typeof(AddFeedCommandHandler) },
                { typeof(AddFeedToDomainCommand), typeof(AddFeedToDomainCommandHandler) },
                { typeof(AddJoinCommand), typeof(AddJoinCommandHandler) },
                { typeof(AddJoinToFeedCommand), typeof(AddJoinToFeedCommandHandler) },
                { typeof(AddJoinToPipeCommand), typeof(AddJoinToPipeCommandHandler) },
                { typeof(AddMessageToFeedCommand), typeof(AddMessageToFeedCommandHandler) },
                { typeof(AddPipeCommand), typeof(AddPipeCommandHandler) },
                { typeof(AddPipeToDomainCommand), typeof(AddPipeToDomainCommandHandler) },
                { typeof(DeleteFeedCommand), typeof(DeleteFeedCommandHandler) },
                { typeof(DeleteMessageCommand), typeof(DeleteMessageCommandHandler) },
                { typeof(DeletePipeCommand), typeof(DeletePipeCommandHandler) },
                { typeof(RemoveFeedFromDomainCommand), typeof(RemoveFeedFromDomainCommandHandler) },
                { typeof(InvalidateCacheCommand), typeof(CacheCleaningHandler) }
            };

            //create policies
            var retryPolicy = Policy
                              .Handle <Exception>()
                              .WaitAndRetry(new[]
            {
                TimeSpan.FromMilliseconds(50),
                TimeSpan.FromMilliseconds(100),
                TimeSpan.FromMilliseconds(150)
            });

            var circuitBreakerPolicy = Policy
                                       .Handle <Exception>()
                                       .CircuitBreaker(1, TimeSpan.FromMilliseconds(500));

            var policyRegistry = new PolicyRegistry()
            {
                { CommandProcessor.RETRYPOLICY, retryPolicy },
                { CommandProcessor.CIRCUITBREAKER, circuitBreakerPolicy }
            };


            var commandProcessor = CommandProcessorBuilder.With()
                                   .Handlers(new HandlerConfiguration(subscriberRegistry, handlerFactory))
                                   .Policies(policyRegistry)
                                   .NoTaskQueues()
                                   .RequestContextFactory(new InMemoryRequestContextFactory())
                                   .Build();

            container.RegisterInstance(typeof(IAmACommandProcessor), commandProcessor);
        }
示例#7
0
        public static void Run(UnityContainer container)
        {
            container.RegisterType <FeedController>();
            container.RegisterType <ProductsController>();
            container.RegisterInstance(typeof(ILog), LogProvider.For <ProductService>(), new ContainerControlledLifetimeManager());
            container.RegisterType <IProductsDAO, ProductsDAO>();
            container.RegisterType <AddProductCommandHandler>();
            container.RegisterType <ChangeProductCommandHandler>();
            container.RegisterType <ProductAddedEventHandler>();
            container.RegisterType <ProductChangedEventHandler>();
            container.RegisterType <ProductRemovedEventHandler>();
            container.RegisterType <RemoveProductCommandHandler>();

            var storage    = new AtomEventsInFiles(new DirectoryInfo(Globals.StoragePath));
            var serializer = new DataContractContentSerializer(
                DataContractContentSerializer
                .CreateTypeResolver(typeof(ProductEntry).Assembly)
                );

            var events = new FifoEvents <ProductEntry>(
                Globals.EventStreamId,
                storage,
                serializer);

            container.RegisterInstance(typeof(IObserver <ProductEntry>), events, new TransientLifetimeManager());

            var handlerFactory = new UnityHandlerFactory(container);

            var subscriberRegistry = new SubscriberRegistry
            {
                { typeof(AddProductCommand), typeof(AddProductCommandHandler) },
                { typeof(ChangeProductCommand), typeof(ChangeProductCommandHandler) },
                { typeof(RemoveProductCommand), typeof(RemoveProductCommandHandler) },
                { typeof(ProductAddedEvent), typeof(ProductAddedEventHandler) },
                { typeof(ProductRemovedEvent), typeof(ProductRemovedEventHandler) },
            };

            //create policies
            var retryPolicy = Policy
                              .Handle <Exception>()
                              .WaitAndRetry(new[]
            {
                TimeSpan.FromMilliseconds(50),
                TimeSpan.FromMilliseconds(100),
                TimeSpan.FromMilliseconds(150)
            });

            var circuitBreakerPolicy = Policy
                                       .Handle <Exception>()
                                       .CircuitBreaker(1, TimeSpan.FromMilliseconds(500));

            var policyRegistry = new PolicyRegistry()
            {
                { CommandProcessor.RETRYPOLICY, retryPolicy },
                { CommandProcessor.CIRCUITBREAKER, circuitBreakerPolicy }
            };


            var commandProcessor = CommandProcessorBuilder.With()
                                   .Handlers(new HandlerConfiguration(subscriberRegistry, handlerFactory))
                                   .Policies(policyRegistry)
                                   .Logger(container.Resolve <ILog>())
                                   .NoTaskQueues()
                                   .RequestContextFactory(new InMemoryRequestContextFactory())
                                   .Build();

            container.RegisterInstance(typeof(IAmACommandProcessor), commandProcessor);
        }