public void Should_throw_exception_when_creating_unknown_process()
		{
			var transportMessage = new TransportMessage();
			var activator = new DefaultProcessActivator();

			Assert.Throws<ProcessException>(() => activator.Create(transportMessage, new MockRegisterMemberCommand()));
		}
		public void Should_throw_exception_when_no_resolver_for_message_to_multiple_processes()
		{
			var transportMessage = new TransportMessage();
			var activator = new DefaultProcessActivator();

			activator.RegisterMappings();

			Assert.Throws<ProcessException>(() => activator.Create(transportMessage, new MockEMailSentEvent()));
		}
		public void Should_be_able_to_start_process()
		{
			var transportMessage = new TransportMessage();
			var activator = new DefaultProcessActivator();

			activator.RegisterMappings();

			Assert.IsTrue(typeof (MockOrderProcess) ==
			              activator.Create(transportMessage, new MockRegisterOrderCommand()).GetType());
			Assert.IsTrue(typeof (MockMemberRegistrationProcess) ==
			              activator.Create(transportMessage, new MockRegisterMemberCommand()).GetType());
		}
		public void Should_be_able_to_request_mapping_registration()
		{
			var transportMessage = new TransportMessage();
			var activator = new DefaultProcessActivator();

			activator.RegisterMappings();

			Assert.IsFalse(activator.IsProcessMessage(transportMessage, new MockNullCommand()));

			Assert.IsTrue(activator.IsProcessMessage(transportMessage, new MockRegisterOrderCommand()));
			Assert.IsTrue(activator.IsProcessMessage(transportMessage, new MockEMailSentEvent()));
			Assert.IsTrue(activator.IsProcessMessage(transportMessage, new MockCompleteOrderCommand()));

			Assert.IsTrue(activator.IsProcessMessage(transportMessage, new MockRegisterMemberCommand()));
			Assert.IsTrue(activator.IsProcessMessage(transportMessage, new MockCompleteMemberRegistrationCommand()));
		}
		public void Should_be_able_to_resolve_message_to_multiple_processes()
		{
			var transportMessage = new TransportMessage
			{
				CorrelationId = Guid.NewGuid().ToString()
			};

			var activator = new DefaultProcessActivator();

			activator.RegisterMappings();

			activator.RegisterResolver<MockEMailSentEvent>(
				(transport, message) => new MessageProcessType(typeof (MockOrderProcess), false));

			var instance = activator.Create(transportMessage, new MockEMailSentEvent());

			Assert.IsTrue(instance.GetType() == typeof (MockOrderProcess));
		}
Example #6
0
        public void Start()
        {
            Log.Assign(new Log4NetLog(LogManager.GetLogger(typeof(Host))));

            _container = new WindsorContainer();

            _container.RegisterDataAccessCore();
            _container.RegisterDataAccess("Shuttle.ProcessManagement");

            _container.Register(Component.For <IEventStore>().ImplementedBy <EventStore>());
            _container.Register(Component.For <IKeyStore>().ImplementedBy <KeyStore>());
            _container.Register(Component.For <ISerializer>().ImplementedBy <DefaultSerializer>());
            _container.Register(Component.For <IEventStoreQueryFactory>().ImplementedBy <EventStoreQueryFactory>());
            _container.Register(Component.For <IKeyStoreQueryFactory>().ImplementedBy <KeyStoreQueryFactory>());

            var subscriptionManager = SubscriptionManager.Default();

            subscriptionManager.Subscribe <OrderCreatedEvent>();
            subscriptionManager.Subscribe <InvoiceCreatedEvent>();
            subscriptionManager.Subscribe <EMailSentEvent>();

            var processConfiguration = ProcessSection.Configuration();
            var processActivator     = new DefaultProcessActivator();

            processActivator.RegisterMappings();

            processConfiguration.ProcessActivator = processActivator;

            _bus = ServiceBus.Create(
                c =>
            {
                c.MessageHandlerFactory(new CastleMessageHandlerFactory(_container).RegisterHandlers());
                c.SubscriptionManager(subscriptionManager);
                c.AddModule(new ProcessModule(_container.Resolve <IDatabaseContextFactory>(), _container.Resolve <IEventStore>(), _container.Resolve <IKeyStore>(), processConfiguration));
            }).Start();
        }