protected override void EstablishContext()
        {
            base.EstablishContext();

            LocalEndpointUri  = "tibco://localhost:7222/mt_client";
            LocalErrorUri     = "tibco://localhost:7222/mt_client_error";
            RemoteEndpointUri = "tibco://localhost:7222/mt_server";

            LocalEndpoint      = new TibcoEndpoint(LocalEndpointUri, new XmlMessageSerializer());
            LocalErrorEndpoint = new TibcoEndpoint(LocalErrorUri, new XmlMessageSerializer());
            RemoteEndpoint     = new TibcoEndpoint(RemoteEndpointUri, new XmlMessageSerializer());

            SetupSubscriptionService();

            LocalBus = ServiceBusConfigurator.New(x =>
            {
                x.AddService <SubscriptionPublisher>();
                x.AddService <SubscriptionConsumer>();
                x.ReceiveFrom(LocalEndpointUri);
                x.SendErrorsTo(LocalErrorUri);
                x.SetConcurrentConsumerLimit(2);
                x.SetConcurrentReceiverLimit(2);
            });

            RemoteBus = ServiceBusConfigurator.New(x =>
            {
                x.AddService <SubscriptionPublisher>();
                x.AddService <SubscriptionConsumer>();
                x.ReceiveFrom(RemoteEndpointUri);
            });
        }
Пример #2
0
        private static void Main()
        {
            /////setup
            XmlConfigurator.ConfigureAndWatch(new FileInfo("log4net.xml"));

            WindsorContainer c  = new DefaultMassTransitContainer();
            IEndpointFactory ef = EndpointFactoryConfigurator.New(e => e.RegisterTransport <MsmqEndpoint>());

            c.Kernel.AddComponentInstance("endpointFactory", typeof(IEndpointFactory), ef);
            c.AddComponent <SimpleMessageHandler>();
            c.AddComponentLifeStyle("counter", typeof(Counter), LifestyleType.Singleton);
            c.AddComponentLifeStyle("rvaoeuaoe", typeof(CacheUpdateResponseHandler), LifestyleType.Transient);

            IServiceBus bus = ServiceBusConfigurator.New(b =>
            {
                b.ReceiveFrom("msmq://localhost/mt_client");
                b.ConfigureService <SubscriptionClientConfigurator>(sc => sc.SetSubscriptionServiceEndpoint("msmq://localhost/mt_subscriptions"));
                b.ConfigureService <HealthClientConfigurator>(hc => hc.SetHeartbeatInterval(10));
            });

            c.Kernel.AddComponentInstance("bus", typeof(IServiceBus), bus);

            bus.Subscribe <CacheUpdateResponseHandler>();
            bus.Subscribe <SimpleMessageHandler>();

            IEndpoint ep            = c.Resolve <IEndpointFactory>().GetEndpoint(new Uri("msmq://localhost/mt_subscriptions"));
            var       subTester     = new SubscriptionServiceTester(ep, bus, c.Resolve <Counter>());
            var       healthTester  = new HealthServiceTester(c.Resolve <Counter>(), bus);
            var       timeoutTester = new TimeoutTester(bus);

            bus.Subscribe(healthTester);
            ///////


            Console.WriteLine("Please enter the number of hours you would like this test to run for?");
            Console.WriteLine("(use 0.1 for 6 minutes)");
            Console.WriteLine("(use 0.016 for 1 minute)");
            string   input    = Console.ReadLine();
            double   hours    = double.Parse(input ?? "0");
            DateTime stopTime = DateTime.Now.AddHours(hours);


            Console.WriteLine("Test Started");
            var rand = new Random();

            while (DateTime.Now < stopTime)
            {
                subTester.Test();
                healthTester.Test();
                timeoutTester.Test();

                Thread.Sleep(rand.Next(5, 10) * 1000);
                PrintTime(bus, c.Resolve <Counter>());
            }

            //print final stuff (probably do this by tester)
            subTester.Results();
            Console.WriteLine("Done (press any key to exit)");
            Console.ReadKey(true);
        }
Пример #3
0
        public ServiceInstance(string name, IEndpointFactory endpointFactory, string subscriptionServiceEndpointAddress, Action <IObjectBuilder> configureBuilder, Action <IServiceBusConfigurator> configurator)
        {
            ObjectBuilder = MockRepository.GenerateMock <IObjectBuilder>();
            ObjectBuilder.Stub(x => x.GetInstance <IEndpointFactory>()).Return(endpointFactory);

            configureBuilder(ObjectBuilder);

            ControlBus = ControlBusConfigurator.New(x =>
            {
                x.SetObjectBuilder(ObjectBuilder);
                x.ReceiveFrom(name + "_control");

                x.PurgeBeforeStarting();
            });

            DataBus = ServiceBusConfigurator.New(x =>
            {
                x.SetObjectBuilder(ObjectBuilder);
                x.ConfigureService <SubscriptionClientConfigurator>(y =>
                {
                    // setup endpoint
                    y.SetSubscriptionServiceEndpoint(subscriptionServiceEndpointAddress);
                });
                x.ReceiveFrom(name);
                x.UseControlBus(ControlBus);
                x.SetConcurrentConsumerLimit(5);

                configurator(x);
            });
        }
Пример #4
0
    void SubscriptionManager()
    {
        _bus = ServiceBusConfigurator.New(servicesBus =>
        {
            servicesBus.ReceiveFrom("msmq://localhost/mt_subscription_ui");
            servicesBus.SetObjectBuilder(_builder);
            servicesBus.ConfigureService <SubscriptionClientConfigurator>(client =>
            {
                // need to add the ability to read from configuratino settings somehow
                client.SetSubscriptionServiceEndpoint("msmq://localhost/mt_subscriptions");
            });
        });

        _unsubscribe = _bus.Subscribe(this);


        _subscriptionServiceEndpoint = _builder.GetInstance <IEndpointFactory>().GetEndpoint("msmq://localhost/mt_subscriptions");


        _subscriptionServiceEndpoint.Send(new CacheUpdateRequest(_bus.Endpoint.Uri));

        //			_timeoutRepository.TimeoutAdded += TimeoutRefreshNeeded;
        //			_timeoutRepository.TimeoutUpdated += TimeoutRefreshNeeded;
        //			_timeoutRepository.TimeoutRemoved += TimeoutRefreshNeeded;
    }
Пример #5
0
        public DoWork(IObjectBuilder objectBuilder)
        {
            ObjectBuilder = objectBuilder;

            var endpointFactory = EndpointFactoryConfigurator.New(x =>
            {
                x.RegisterTransport <MsmqEndpoint>();
                x.SetObjectBuilder(objectBuilder);
                x.SetDefaultSerializer <XmlMessageSerializer>();
            });

            ControlBus = ControlBusConfigurator.New(x =>
            {
                x.SetObjectBuilder(ObjectBuilder);

                x.ReceiveFrom(new Uri(ConfigurationManager.AppSettings["SourceQueue"]).AppendToPath("_control"));

                x.PurgeBeforeStarting();
            });

            DataBus = ServiceBusConfigurator.New(x =>
            {
                x.SetObjectBuilder(ObjectBuilder);
                x.ConfigureService <SubscriptionClientConfigurator>(y =>
                {
                    y.SetSubscriptionServiceEndpoint(ConfigurationManager.AppSettings["SubscriptionQueue"]);
                });
                x.ReceiveFrom(ConfigurationManager.AppSettings["SourceQueue"]);
                x.UseControlBus(ControlBus);
                x.SetConcurrentConsumerLimit(4);
                x.ImplementDistributorWorker <DoSimpleWorkItem>(ConsumeMessage);
            });
        }
Пример #6
0
        protected override void EstablishContext()
        {
            base.EstablishContext();

            const string subscriptionServiceEndpointAddress = "loopback://localhost/mt_subscriptions";

            SubscriptionBus = ServiceBusConfigurator.New(x => { x.ReceiveFrom(subscriptionServiceEndpointAddress); });

            SetupSubscriptionService();

            LocalBus = ServiceBusConfigurator.New(x =>
            {
                x.ConfigureService <SubscriptionClientConfigurator>(y =>
                {
                    // setup endpoint
                    y.SetSubscriptionServiceEndpoint(subscriptionServiceEndpointAddress);
                });
                x.ReceiveFrom("loopback://localhost/mt_client");
            });

            RemoteBus = ServiceBusConfigurator.New(x =>
            {
                x.ConfigureService <SubscriptionClientConfigurator>(y =>
                {
                    // setup endpoint
                    y.SetSubscriptionServiceEndpoint(subscriptionServiceEndpointAddress);
                });
                x.ReceiveFrom("loopback://localhost/mt_server");
            });

            SetupHealthService();

            Thread.Sleep(1000);
        }
        protected override void EstablishContext()
        {
            base.EstablishContext();

            LocalEndpoint      = EndpointFactory.GetEndpoint(LocalEndpointUri);
            LocalErrorEndpoint = EndpointFactory.GetEndpoint(LocalErrorUri);
            RemoteEndpoint     = EndpointFactory.GetEndpoint(RemoteEndpointUri);

            SetupSubscriptionService();

            LocalBus = ServiceBusConfigurator.New(x =>
            {
                x.AddService <SubscriptionPublisher>();
                x.AddService <SubscriptionConsumer>();
                x.ReceiveFrom(LocalEndpointUri);
                x.SendErrorsTo(LocalErrorUri);
            });

            RemoteBus = ServiceBusConfigurator.New(x =>
            {
                x.AddService <SubscriptionPublisher>();
                x.AddService <SubscriptionConsumer>();
                x.ReceiveFrom(RemoteEndpointUri);
            });
        }
Пример #8
0
        public void Start()
        {
            ControlBus = ControlBusConfigurator.New(x =>
            {
                x.SetObjectBuilder(ObjectBuilder);

                x.ReceiveFrom(ConfigurationManager.AppSettings["SourceQueue"] + "_control");

                x.PurgeBeforeStarting();
            });

            DataBus = ServiceBusConfigurator.New(x =>
            {
                x.SetObjectBuilder(ObjectBuilder);
                x.ConfigureService <SubscriptionClientConfigurator>(y =>
                {
                    y.SetSubscriptionServiceEndpoint(ConfigurationManager.AppSettings["SubscriptionQueue"]);
                });
                x.ReceiveFrom(ConfigurationManager.AppSettings["SourceQueue"]);
                x.UseControlBus(ControlBus);
                x.SetConcurrentConsumerLimit(4);

                x.ConfigureService <GridConfigurator>(grid =>
                {
                    if (ConfigurationManager.AppSettings["IsProposer"].Equals("true"))
                    {
                        grid.SetProposer();
                    }
                    grid.For <DoSimpleWorkItem>().Use <DoWork>();
                });
            });
        }
Пример #9
0
        protected override void EstablishContext()
        {
            base.EstablishContext();

            LocalBus = ServiceBusConfigurator.New(x => { x.ReceiveFrom("multicast://227.43.1.1:5309/"); });

            RemoteBus = ServiceBusConfigurator.New(x => { x.ReceiveFrom("multicast://227.43.1.1:5309/"); });
        }
Пример #10
0
        protected override void EstablishContext()
        {
            base.EstablishContext();

            LocalBus = ServiceBusConfigurator.New(x =>
            {
                x.ReceiveFrom("loopback://localhost/mt_client");
            });
        }
Пример #11
0
        protected virtual IServiceBus SetupServiceBus(Uri uri, Action <IServiceBusConfigurator> configure)
        {
            IServiceBus bus = ServiceBusConfigurator.New(x =>
            {
                x.ReceiveFrom(uri);

                configure(x);
            });

            Buses.Add(bus);

            return(bus);
        }
Пример #12
0
        protected void RegisterServiceBus(Uri endpointUri, Action <IServiceBusConfigurator> configAction)
        {
            Kernel.Register(
                Component.For <IServiceBus>().UsingFactoryMethod((kernel, context) =>
            {
                return(ServiceBusConfigurator.New(x =>
                {
                    x.SetObjectBuilder(kernel.Resolve <IObjectBuilder>());
                    x.ReceiveFrom(endpointUri);

                    configAction(x);
                }));
            }).LifeStyle.Singleton);
        }
Пример #13
0
        protected void RegisterServiceBus(Uri endpointUri, Action <IServiceBusConfigurator> configAction)
        {
            Bind <IServiceBus>()
            .ToMethod(context =>
            {
                return(ServiceBusConfigurator.New(x =>
                {
                    x.SetObjectBuilder(context.Kernel.Get <IObjectBuilder>());
                    x.ReceiveFrom(endpointUri);

                    configAction(x);
                }));
            })
            .InSingletonScope();
        }
Пример #14
0
        protected void RegisterServiceBus(Uri endpointUri, Action <IServiceBusConfigurator, IContext> configAction)
        {
            For <IServiceBus>()
            .Singleton()
            .Use(context =>
            {
                return(ServiceBusConfigurator.New(x =>
                {
                    x.SetObjectBuilder(context.GetInstance <IObjectBuilder>());
                    x.ReceiveFrom(endpointUri);

                    configAction(x, context);
                }));
            });
        }
Пример #15
0
        protected override void EstablishContext()
        {
            base.EstablishContext();

            _before = new ManualResetEvent(false);
            _after  = new ManualResetEvent(false);

            LocalBus = ServiceBusConfigurator.New(x =>
            {
                x.ReceiveFrom("loopback://localhost/mt_client");

                x.BeforeConsumingMessage(() => { _before.Set(); });
                x.AfterConsumingMessage(() => { _after.Set(); });
            });
        }
Пример #16
0
        private static void Main(string[] args)
        {
            _log.Info("Server Loading");

            var cfg = RunnerConfigurator.New(c =>
            {
                c.SetServiceName("SampleClientService");
                c.SetDisplayName("SampleClientService");
                c.SetDescription("SampleClientService");
                c.DependencyOnMsmq();
                c.RunAsLocalSystem();


                c.ConfigureService <ClientService>(typeof(ClientService).Name, s =>
                {
                    s.WhenStarted(o =>
                    {
                        var bus = ServiceBusConfigurator.New(servicesBus =>
                        {
                            servicesBus.ReceiveFrom("msmq://localhost/mt_client");
                            servicesBus.ConfigureService <SubscriptionClientConfigurator>(client =>
                            {
                                // need to add the ability to read from configuratino settings somehow
                                client.SetSubscriptionServiceEndpoint("msmq://localhost/mt_subscriptions");
                            });
                        });

                        o.Start(bus);
                    });
                    s.WhenStopped(o => o.Stop());
                    s.CreateServiceLocator(() =>
                    {
                        var container = new DefaultMassTransitContainer();
                        IEndpointFactory endpointFactory = EndpointFactoryConfigurator.New(e =>
                        {
                            e.SetObjectBuilder(ServiceLocator.Current.GetInstance <IObjectBuilder>());
                            e.RegisterTransport <MsmqEndpoint>();
                        });
                        container.Kernel.AddComponentInstance("endpointFactory", typeof(IEndpointFactory), endpointFactory);
                        container.AddComponent <ClientService>(typeof(ClientService).Name);
                        container.AddComponent <PasswordUpdater>();
                        return(ServiceLocator.Current);                                                //set in the DefaultMTContainer
                    });
                });
            });

            Runner.Host(cfg, args);
        }
Пример #17
0
 protected override void Before_each()
 {
     _builder         = MockRepository.GenerateMock <IObjectBuilder>();
     _endpointFactory = EndpointFactoryConfigurator.New(x =>
     {
         x.SetObjectBuilder(_builder);
         x.SetDefaultSerializer <XmlMessageSerializer>();
         x.RegisterTransport <LoopbackEndpoint>();
     });
     _builder.Stub(x => x.GetInstance <IEndpointFactory>()).Return(_endpointFactory);
     _bus = ServiceBusConfigurator.New(x =>
     {
         x.SetObjectBuilder(_builder);
         x.ReceiveFrom("loopback://localhost/servicebus");
     });
 }
Пример #18
0
        protected override void EstablishContext()
        {
            base.EstablishContext();

            SubscriptionBus = ServiceBusConfigurator.New(x =>
            {
                x.ReceiveFrom(SubscriptionServiceUri);
                x.SetConcurrentConsumerLimit(1);
            });

            SetupSubscriptionService(ObjectBuilder);

            SetupLocalBus();

            SetupRemoteBus();

            Instances = new Dictionary <string, ServiceInstance>();
        }
Пример #19
0
        private static void Main(string[] args)
        {
            XmlConfigurator.ConfigureAndWatch(new FileInfo("server.log4net.xml"));
            _log.Info("Server Loading");

            IRunConfiguration cfg = RunnerConfigurator.New(c =>
            {
                c.SetServiceName("SampleService");
                c.SetServiceName("Sample Service");
                c.SetServiceName("Something");
                c.DependencyOnMsmq();

                c.RunAsLocalSystem();

                c.ConfigureService <PasswordUpdateService>(typeof(PasswordUpdateService).Name, s =>
                {
                    s.WhenStarted(o =>
                    {
                        IServiceBus bus = ServiceBusConfigurator.New(x =>
                        {
                            x.ReceiveFrom("msmq://localhost/mt_server");
                            x.ConfigureService <SubscriptionClientConfigurator>(b => { b.SetSubscriptionServiceEndpoint("msmq://localhost/mt_subscriptions"); });
                        });
                        o.Start(bus);
                    });
                    s.WhenStopped(o => o.Stop());
                    s.CreateServiceLocator(() =>
                    {
                        var container = new DefaultMassTransitContainer();
                        IEndpointFactory endpointFactory = EndpointFactoryConfigurator
                                                           .New(x =>
                        {
                            x.SetObjectBuilder(ServiceLocator.Current.GetInstance <IObjectBuilder>());
                            x.RegisterTransport <MsmqEndpoint>();
                        });
                        container.Kernel.AddComponentInstance("endpointFactory", typeof(IEndpointFactory), endpointFactory);
                        container.AddComponent <PasswordUpdateService>(typeof(PasswordUpdateService).Name);
                        return(ServiceLocator.Current);                                                //set in DefaultMTContainer
                    });
                });
            });

            Runner.Host(cfg, args);
        }
Пример #20
0
        private static void ConfigureHealthService(IServiceConfigurator <HealthService> configurator)
        {
            configurator.CreateServiceLocator(() =>
            {
                var container = new DefaultMassTransitContainer();

                container.AddComponent <HealthService>(typeof(HealthService).Name);
                container.AddComponent("sagaRepository", typeof(ISagaRepository <>), typeof(InMemorySagaRepository <>));

                var endpointFactory = EndpointFactoryConfigurator.New(x =>
                {
                    // the default
                    x.SetObjectBuilder(container.Resolve <IObjectBuilder>());
                    x.RegisterTransport <MsmqEndpoint>();
                });

                container.Kernel.AddComponentInstance("endpointFactory", typeof(IEndpointFactory), endpointFactory);

                var bus = ServiceBusConfigurator.New(x =>
                {
                    x.SetObjectBuilder(container.Resolve <IObjectBuilder>());
                    x.ReceiveFrom("msmq://localhost/mt_health");
                    x.ConfigureService <SubscriptionClientConfigurator>(client =>
                    {
                        // need to add the ability to read from configuratino settings somehow
                        client.SetSubscriptionServiceEndpoint("msmq://localhost/mt_subscriptions");
                    });
                });

                container.Kernel.AddComponentInstance("bus", typeof(IServiceBus), bus);

                return(container.Resolve <IObjectBuilder>());
            });

            configurator.WhenStarted(service => { service.Start(); });

            configurator.WhenStopped(service =>
            {
                service.Stop();
                service.Dispose();
            });
        }
        protected override void EstablishContext()
        {
            base.EstablishContext();

            SetupSubscriptionService();

            LocalBus = ServiceBusConfigurator.New(x =>
            {
                x.AddService <SubscriptionPublisher>();
                x.AddService <SubscriptionConsumer>();
                x.ReceiveFrom(new UriBuilder("activemq", ActiveMQHostName, 61616, "mt_client").Uri);
            });

            RemoteBus = ServiceBusConfigurator.New(x =>
            {
                x.AddService <SubscriptionPublisher>();
                x.AddService <SubscriptionConsumer>();
                x.ReceiveFrom(new UriBuilder("activemq", ActiveMQHostName, 61616, "mt_server").Uri);
            });
        }
Пример #22
0
        protected override void EstablishContext()
        {
            base.EstablishContext();

            SetupSubscriptionService();

            LocalBus = ServiceBusConfigurator.New(x =>
            {
                x.AddService <SubscriptionPublisher>();
                x.AddService <SubscriptionConsumer>();
                x.ReceiveFrom("loopback://localhost/mt_client");
            });

            RemoteBus = ServiceBusConfigurator.New(x =>
            {
                x.AddService <SubscriptionPublisher>();
                x.AddService <SubscriptionConsumer>();
                x.ReceiveFrom("loopback://localhost/mt_server");
            });
        }
Пример #23
0
        protected void SetupRemoteBus()
        {
            RemoteControlBus = ControlBusConfigurator.New(x =>
            {
                x.ReceiveFrom(ServerControlUri);

                x.PurgeBeforeStarting();
            });

            RemoteBus = ServiceBusConfigurator.New(x =>
            {
                x.ConfigureService <SubscriptionClientConfigurator>(y =>
                {
                    // setup endpoint
                    y.SetSubscriptionServiceEndpoint(SubscriptionServiceUri);
                });
                x.ReceiveFrom(ServerUri);
                x.UseControlBus(RemoteControlBus);
            });
        }
Пример #24
0
        private static void ConfigureSubscriptionService(IServiceConfigurator <SubscriptionService> configurator)
        {
            configurator.CreateServiceLocator(() =>
            {
                var container = new DefaultMassTransitContainer();

                container.AddComponent("sagaRepository", typeof(ISagaRepository <>), typeof(InMemorySagaRepository <>));

                container.AddComponent <ISubscriptionRepository, InMemorySubscriptionRepository>();
                container.AddComponent <SubscriptionService, SubscriptionService>(typeof(SubscriptionService).Name);

                var endpointFactory = EndpointFactoryConfigurator.New(x =>
                {
                    // the default
                    x.SetObjectBuilder(container.Resolve <IObjectBuilder>());
                    x.RegisterTransport <MsmqEndpoint>();
                });

                container.Kernel.AddComponentInstance("endpointFactory", typeof(IEndpointFactory), endpointFactory);

                var bus = ServiceBusConfigurator.New(servicesBus =>
                {
                    servicesBus.SetObjectBuilder(container.Resolve <IObjectBuilder>());
                    servicesBus.ReceiveFrom("msmq://localhost/mt_subscriptions");
                    servicesBus.SetConcurrentConsumerLimit(1);
                });

                container.Kernel.AddComponentInstance("bus", typeof(IServiceBus), bus);

                return(container.ObjectBuilder);
            });

            configurator.WhenStarted(service => service.Start());

            configurator.WhenStopped(service =>
            {
                service.Stop();
                service.Dispose();
            });
        }
Пример #25
0
        protected void SetupLocalBus()
        {
            LocalControlBus = ControlBusConfigurator.New(x =>
            {
                x.ReceiveFrom(ClientControlUri);

                x.PurgeBeforeStarting();
            });

            LocalBus = ServiceBusConfigurator.New(x =>
            {
                x.ConfigureService <SubscriptionClientConfigurator>(y =>
                {
                    // setup endpoint
                    y.SetSubscriptionServiceEndpoint(SubscriptionServiceUri);
                });
                x.ReceiveFrom(ClientUri);
                x.SetConcurrentConsumerLimit(4);
                x.UseControlBus(LocalControlBus);

                ConfigureLocalBus(x);
            });
        }
Пример #26
0
        protected override void EstablishContext()
        {
            base.EstablishContext();

            SetupSubscriptionService();

            LocalControlBus = ControlBusConfigurator.New(x =>
            {
                x.ReceiveFrom("loopback://localhost/mt_client_control");

                x.PurgeBeforeStarting();
            });

            RemoteControlBus = ControlBusConfigurator.New(x =>
            {
                x.ReceiveFrom("loopback://localhost/mt_server_control");

                x.PurgeBeforeStarting();
            });

            LocalBus = ServiceBusConfigurator.New(x =>
            {
                x.AddService <SubscriptionPublisher>();
                x.AddService <SubscriptionConsumer>();
                x.ReceiveFrom("loopback://localhost/mt_client");
                x.UseControlBus(LocalControlBus);
            });

            RemoteBus = ServiceBusConfigurator.New(x =>
            {
                x.AddService <SubscriptionPublisher>();
                x.AddService <SubscriptionConsumer>();
                x.ReceiveFrom("loopback://localhost/mt_server");
                x.UseControlBus(RemoteControlBus);
            });
        }