public void Setup()
        {
            var logger = new Mock <ILog>().Object;

            var registry = new SubscriberRegistry();

            registry.Register <TestCommand, TestFailingTimeoutHandler>();

            var container      = new TinyIoCContainer();
            var handlerFactory = new TinyIoCHandlerFactory(container);

            container.Register(logger);
            container.Register <IHandleRequests <TestCommand>, TestFailingTimeoutHandler>().AsSingleton();
            container.Register <IHandleRequests <TestCommand>, TimeoutPolicyHandler <TestCommand> >().AsSingleton();

            TestFailingTimeoutHandler.WasCancelled  = false;
            TestFailingTimeoutHandler.TaskCompleted = true;

            commandProcessor = new CommandProcessor(registry, handlerFactory, new InMemoryRequestContextFactory(), new PolicyRegistry(), logger);

            try
            {
                commandProcessor.Send(testCommand);
            }
            catch (AggregateException ex)
            {
                aggregateException = ex;
            }
        }
示例#2
0
        public void Setup()
        {
            var logger = new Mock <ILog>().Object;

            var registry = new SubscriberRegistry();

            registry.Register <TestCommand, TestUnusedCommandHandler>();

            var container      = new TinyIoCContainer();
            var handlerFactory = new TinyIoCHandlerFactory(container);

            container.Register <IHandleRequests <TestCommand>, TestUnusedCommandHandler>();
            container.Register <IHandleRequests <TestCommand>, TestAbortingHandler <TestCommand> >();
            container.Register(logger);

            commandProcessor = new CommandProcessor(registry, handlerFactory, new InMemoryRequestContextFactory(), new PolicyRegistry(), logger);
        }
        public void Setup()
        {
            var logger = new Mock <ILog>().Object;

            var registry = new SubscriberRegistry();

            registry.Register <TestEvent, TestEventHandler>();
            registry.Register <TestEvent, TestOtherEventHandler>();

            var container      = new TinyIoCContainer();
            var handlerFactory = new TinyIoCHandlerFactory(container);

            container.Register <IHandleRequests <TestEvent>, TestEventHandler>("TestEventHandler");
            container.Register <IHandleRequests <TestEvent>, TestOtherEventHandler>("TestOtherHandler");
            container.Register(logger);

            commandProcessor = new CommandProcessor(registry, handlerFactory, new InMemoryRequestContextFactory(), new PolicyRegistry(), logger);
        }
        public void Setup()
        {
            var logger = new Mock <ILog>().Object;

            var registry = new SubscriberRegistry();

            registry.Register <TestCommand, TestImplicitHandler>();

            var container      = new TinyIoCContainer();
            var handlerFactory = new TinyIoCHandlerFactory(container);

            container.Register <IHandleRequests <TestCommand>, TestImplicitHandler>();
            container.Register <IHandleRequests <TestCommand>, TestLoggingHandler <TestCommand> >();
            container.Register(logger);

            pipelineBuilder = new PipelineBuilder <TestCommand>(registry, handlerFactory, logger);

            pipeline = pipelineBuilder.Build(new RequestContext()).First();
        }
示例#5
0
        public void Setup()
        {
            var logger = new Mock <ILog>().Object;

            var registry = new SubscriberRegistry();

            registry.Register <TestCommand, TestPreAndPostDecoratedHandler>();

            var container      = new TinyIoCContainer();
            var handlerFactory = new TinyIoCHandlerFactory(container);

            container.Register <IHandleRequests <TestCommand>, TestPreAndPostDecoratedHandler>();
            container.Register <IHandleRequests <TestCommand>, TestValidationHandler <TestCommand> >();
            container.Register <IHandleRequests <TestCommand>, TestLoggingHandler <TestCommand> >();
            container.Register(logger);
            commandProcessor = new CommandProcessor(registry, handlerFactory, new InMemoryRequestContextFactory(), new PolicyRegistry(), logger);

            commandProcessor.Send(testCommand);
        }
示例#6
0
        protected override void ConfigureApplicationContainer(TinyIoCContainer container)
        {
            base.ConfigureApplicationContainer(container);
            var logger = LogProvider.GetLogger(this.GetType().Namespace);

            container.Register(logger);

            var subscriberRegistry = new SubscriberRegistry();

            subscriberRegistry.Register <AddTaskCommand, AddTaskCommandHandler>();
            subscriberRegistry.Register <CompleteTaskCommand, CompleteTaskCommandHandler>();

            container.Register <IHandleRequests <AddTaskCommand>, AddTaskCommandHandler>().AsMultiInstance();
            container.Register <IHandleRequests <CompleteTaskCommand>, CompleteTaskCommandHandler>().AsMultiInstance();
            var handlerFactory = new TinyIoCHandlerFactory(container);

            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 sqlMessageStore = new MsSqlMessageStore(new MsSqlMessageStoreConfiguration("Data Source=|DataDirectory|Tasks.sdf;Persist Security Info=False;", "messages", MsSqlMessageStoreConfiguration.DatabaseType.SqlCe), logger);
            var gateway         = new AzureServiceBusMessageProducer(logger);

            container.Register <IAmAMessageMapper <TaskReminderCommand>, TaskReminderCommandMessageMapper>().AsMultiInstance();
            var messageMapperFactory  = new TinyIoCMessageMapperFactory(container);
            var messageMapperRegistry = new MessageMapperRegistry(messageMapperFactory);

            messageMapperRegistry.Add(typeof(TaskReminderCommand), typeof(TaskReminderCommandMessageMapper));
            messageMapperRegistry.Add(typeof(TaskCompletedEvent), typeof(TaskCompletedEventMapper));

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

            container.Register <IAmACommandProcessor>(commandProcessor);
        }
        public void Setup()
        {
            var logger = new Mock <ILog>().Object;

            var registry = new SubscriberRegistry();

            registry.Register <TestCommand, TestFailingDivideByZeroHandler>();

            var container      = new TinyIoCContainer();
            var handlerFactory = new TinyIoCHandlerFactory(container);

            container.Register <IHandleRequests <TestCommand>, TestFailingDivideByZeroHandler>().AsSingleton();
            container.Register <IHandleRequests <TestCommand>, ExceptionPolicyHandler <TestCommand> >().AsSingleton();
            container.Register(logger);

            var policyRegistry = new PolicyRegistry();

            var policy = Policy
                         .Handle <DivideByZeroException>()
                         .WaitAndRetry(new[]
            {
                100.Milliseconds(),
                200.Milliseconds(),
                300.Milliseconds()
            }, (exception, timeSpan) =>
            {
                retryCount++;
            });

            policyRegistry.Add("TestDivideByZeroPolicy", policy);

            TestFailingDivideByZeroHandler.ReceivedCommand = false;

            commandProcessor = new CommandProcessor(registry, handlerFactory, new InMemoryRequestContextFactory(), policyRegistry, logger);

            try
            {
                commandProcessor.Send(testCommand);
            }
            catch (DivideByZeroException)
            {
            }
        }
        public void Setup()
        {
            var logger = new Mock <ILog>().Object;

            var registry = new SubscriberRegistry();

            registry.Register <TestCommand, TestNotFailingTimeoutHandler>();

            var container      = new TinyIoCContainer();
            var handlerFactory = new TinyIoCHandlerFactory(container);

            container.Register <IHandleRequests <TestCommand>, TestNotFailingTimeoutHandler>().AsSingleton();
            container.Register <IHandleRequests <TestCommand>, TimeoutPolicyHandler <TestCommand> >().AsSingleton();
            container.Register(logger);

            var commandProcessor = new CommandProcessor(registry, handlerFactory, new InMemoryRequestContextFactory(), new PolicyRegistry(), logger);

            commandProcessor.Send(testCommand);
        }
        public void Setup()
        {
            var logger = new Mock <ILog>().Object;

            var registry = new SubscriberRegistry();

            registry.Register <TestCommand, TestPreAndPostDecoratedHandler>();
            registry.Register <TestCommand, TestLoggingHandler <TestCommand> >();

            var container      = new TinyIoCContainer();
            var handlerFactory = new TinyIoCHandlerFactory(container);

            container.Register <IHandleRequests <TestCommand>, TestPreAndPostDecoratedHandler>();
            container.Register <IHandleRequests <TestCommand>, TestValidationHandler <TestCommand> >();
            container.Register <IHandleRequests <TestCommand>, TestLoggingHandler <TestCommand> >();
            container.Register(logger);

            pipelineBuilder = new PipelineBuilder <TestCommand>(registry, handlerFactory, logger);

            pipelineBuilder.Build(new RequestContext());

            pipelineBuilder.Dispose();
        }