public OrderService() { log4net.Config.XmlConfigurator.Configure(); var logger = LogProvider.For<OrderService>(); var container = new UnityContainer(); container.RegisterInstance(typeof(ILog), LogProvider.For<OrderService>(), new ContainerControlledLifetimeManager()); container.RegisterType<OrderUpdateCommandMessageMapper>(); container.RegisterType<OrderUpdateCommandHandler>(); container.RegisterType<IOrdersDAO, OrdersDAO>(); container.RegisterType<IAmAMailGateway, MailGateway>(); container.RegisterType<IAmAMailTranslator, MailTranslator>(); var handlerFactory = new UnityHandlerFactory(container); var messageMapperFactory = new UnityMessageMapperFactory(container); var subscriberRegistry = new SubscriberRegistry(); subscriberRegistry.Register<OrderUpdateCommand, OrderUpdateCommandHandler>(); //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(logger) .NoTaskQueues() .RequestContextFactory(new InMemoryRequestContextFactory()) .Build(); //create message mappers var messageMapperRegistry = new MessageMapperRegistry(messageMapperFactory); messageMapperRegistry.Register<OrderUpdateCommand, OrderUpdateCommandMessageMapper>(); var rmqMessageConsumerFactory = new RmqMessageConsumerFactory(logger); _dispatcher = DispatchBuilder.With() .Logger(logger) .CommandProcessor(commandProcessor) .MessageMappers(messageMapperRegistry) .ChannelFactory(new InputChannelFactory(rmqMessageConsumerFactory)) .ConnectionsFromConfiguration() .Build(); }
public OrderService() { log4net.Config.XmlConfigurator.Configure(); var logger = LogProvider.For <OrderService>(); var container = new UnityContainer(); container.RegisterInstance(typeof(ILog), LogProvider.For <OrderService>(), new ContainerControlledLifetimeManager()); container.RegisterType <OrderUpdateCommandMessageMapper>(); container.RegisterType <OrderUpdateCommandHandler>(); container.RegisterType <IOrdersDAO, OrdersDAO>(); container.RegisterType <IAmAMailGateway, MailGateway>(); container.RegisterType <IAmAMailTranslator, MailTranslator>(); var handlerFactory = new UnityHandlerFactory(container); var messageMapperFactory = new UnityMessageMapperFactory(container); var subscriberRegistry = new SubscriberRegistry(); subscriberRegistry.Register <OrderUpdateCommand, OrderUpdateCommandHandler>(); //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(logger) .NoTaskQueues() .RequestContextFactory(new InMemoryRequestContextFactory()) .Build(); //create message mappers var messageMapperRegistry = new MessageMapperRegistry(messageMapperFactory); messageMapperRegistry.Register <OrderUpdateCommand, OrderUpdateCommandMessageMapper>(); var rmqMessageConsumerFactory = new RmqMessageConsumerFactory(logger); _dispatcher = DispatchBuilder.With() .Logger(logger) .CommandProcessor(commandProcessor) .MessageMappers(messageMapperRegistry) .ChannelFactory(new InputChannelFactory(rmqMessageConsumerFactory)) .ConnectionsFromConfiguration() .Build(); }