Пример #1
0
		protected override void ConfigureLocalBus(ServiceBusConfigurator configurator)
		{
			base.ConfigureLocalBus(configurator);

			_timeoutSagaRepository = SetupSagaRepository<TimeoutSaga>();

			configurator.Subscribe(s => { s.Saga(_timeoutSagaRepository); });
		}
Пример #2
0
        protected override void ConfigureLocalBus(ServiceBusConfigurator configurator)
        {
            base.ConfigureLocalBus(configurator);

            _sagaRepository = new NHibernateSagaRepository<ConcurrentSaga>(SessionFactory);

            configurator.Subscribe(x => x.Saga(_sagaRepository));
        }
Пример #3
0
        protected override void ConfigureServiceBus(Uri uri, ServiceBusConfigurator configurator)
        {
            base.ConfigureServiceBus(uri, configurator);

            _received = new Future<A>();

            configurator.Subscribe(x => { x.Handler<A>(msg => _received.Complete(msg)); });
        }
Пример #4
0
        protected override void ConfigureServiceBus(Uri uri, ServiceBusConfigurator configurator)
        {
            _received = new Future<A>();

            configurator.Subscribe(s => s.Handler<A>(message => _received.Complete(message)));
            configurator.UseControlBus();
            configurator.UseStomp();
        }
		protected override void ConfigureServiceBus(Uri uri, ServiceBusConfigurator configurator)
		{
			base.ConfigureServiceBus(uri, configurator);

			_receivedB = new Future<B>();

			configurator.Subscribe(s => s.Handler<B>(message => _receivedB.Complete(message)));
		}
Пример #6
0
 public void Config(IComponentContext container, ServiceBusConfigurator busConfig)
 {
     busConfig.UseMsmq();
     busConfig.UseMulticastSubscriptionClient();
     busConfig.VerifyMsmqConfiguration();
     busConfig.VerifyMsDtcConfiguration();
     busConfig.ReceiveFrom(receiveFromEndPoint);
 }
Пример #7
0
        public static void SetSubscriptionObserver(this ServiceBusConfigurator configurator,
                                                   Func <IServiceBus, SubscriptionRouter, SubscriptionObserver>
                                                   observerFactory)
        {
            var coordinatorConfigurator =
                new SubscriptionRouterBuilderConfiguratorImpl(x => { x.SetObserverFactory(observerFactory); });

            configurator.AddSubscriptionRouterConfigurator(coordinatorConfigurator);
        }
Пример #8
0
 private static void SetupAzureServiceBus(ServiceBusConfigurator sbc, string azureNameSpace)
 {
     sbc.UseAzureServiceBus(a => a.ConfigureNamespace(azureNameSpace, h =>
     {
         h.SetKeyName(GetConfigValue("azure-keyname", "RootManageSharedAccessKey"));
         h.SetKey(GetConfigValue("azure-key", ""));
     }));
     sbc.UseAzureServiceBusRouting();
 }
Пример #9
0
        public static void UseSagaDistributorFor <T>(this ServiceBusConfigurator configurator)
            where T : SagaStateMachine <T>, ISaga
        {
            T saga = FastActivator <T> .Create(NewId.NextGuid());

            var serviceConfigurator = new SagaDistributorConfigurator(configurator);

            saga.EnumerateDataEvents(serviceConfigurator.AddService);
        }
Пример #10
0
        /// <summary>
        /// Implements a distributor-to-worker pattern for the given message type.
        /// </summary>
        /// <typeparam name="TMessage">The type of to use the distributor</typeparam>
        /// <param name="configurator">Service bus to implement the distributor</param>
        /// <param name="workerSelectionStrategy">The <code>IWorkerSelectionStrategy</code>
        /// used to pick which worker node to send a message</param>
        public static void UseDistributorFor <TMessage>(this ServiceBusConfigurator configurator,
                                                        IWorkerSelectionStrategy <TMessage> workerSelectionStrategy)
            where TMessage : class
        {
            configurator.AddService(BusServiceLayer.Presentation,
                                    () => new Distributor <TMessage>(workerSelectionStrategy));

            configurator.SetReceiveTimeout(50.Milliseconds());
        }
Пример #11
0
        protected override void ConfigureLocalBus(ServiceBusConfigurator configurator)
        {
            base.ConfigureLocalBus(configurator);


            _received = new Future<A>();

            configurator.Subscribe(s => s.Handler<A>(message => _received.Complete(message)));
        }
 private static void SetupAzureServiceBus(ServiceBusConfigurator sbc, string azureNameSpace)
 {
   sbc.UseAzureServiceBus(a => a.ConfigureNamespace(azureNameSpace, h =>
   {
     h.SetKeyName(GetConfigValue("azure-keyname", "RootManageSharedAccessKey"));
     h.SetKey(GetConfigValue("azure-key", ""));
   }));
   sbc.UseAzureServiceBusRouting();
 }
 protected virtual void ConfigureRemoteBus(ServiceBusConfigurator configurator)
 {
     configurator.ReceiveFrom("loopback://localhost/mt_server");
     configurator.AddSubscriptionObserver((bus, coordinator) =>
     {
         _remoteLoopback = new SubscriptionLoopback(bus, coordinator);
         return(_remoteLoopback);
     });
 }
        /// <summary>
        /// Specify subscription storage for the bus instance using NHibernate
        /// </summary>
        /// <param name="sessionFactory">The session factory for the storage</param>
        public static void UseNHibernateSubscriptionStorage(this ServiceBusConfigurator configurator,
                                                            ISessionFactory sessionFactory)
        {
            Func <SubscriptionStorage> factoryMethod = () => new NHibernateSubscriptionStorage(sessionFactory);

            var builderConfigurator = new SubscriptionRouterBuilderConfiguratorImpl(
                x => x.UseSubscriptionStorage(factoryMethod));

            configurator.AddSubscriptionRouterConfigurator(builderConfigurator);
        }
Пример #15
0
        public static ServiceBusConfigurator UseStomp(this ServiceBusConfigurator configurator)
        {
            var busConfigurator = new PostCreateBusBuilderConfiguratorImpl(
                bus => bus.AddService(BusServiceLayer.Network, new StompSubscriptionService()));

            configurator.AddBusConfigurator(busConfigurator);
            configurator.UseJsonSerializer();

            return(configurator.AddTransportFactory <StompTransportFactory>());
        }
Пример #16
0
 protected virtual void ConfigureLocalBus(ServiceBusConfigurator configurator)
 {
     LocalUri = new Uri("loopback://localhost/mt_client");
     configurator.ReceiveFrom(LocalUri);
     configurator.AddSubscriptionObserver((bus, coordinator) =>
     {
         _localLoopback = new SubscriptionLoopback(bus, coordinator);
         return(_localLoopback);
     });
 }
Пример #17
0
        protected override void ConfigureRemoteBus(ServiceBusConfigurator configurator)
        {
            base.ConfigureRemoteBus(configurator);

            configurator.Subscribe(cf =>
            {
                cf.Handler <MyMessage>(message => receivedMessages.Add(1));
                cf.Handler <MyMessage>(message => receivedMessages.Add(2));
            });
        }
Пример #18
0
 public static void SetDefaultBusSettings(ServiceBusConfigurator sbc)
 {
     sbc.UseMsmq();
     sbc.VerifyMsmqConfiguration();
     sbc.SetCreateTransactionalQueues(true);
     sbc.UseSubscriptionService(Constants.QueueSubscriptions);
     sbc.UseControlBus();
     sbc.SetDefaultTransactionTimeout(TimeSpan.FromSeconds(20));
     sbc.SetConcurrentConsumerLimit(1);
 }
        protected override void ConfigureRemoteBus(ServiceBusConfigurator configurator)
        {
            base.ConfigureRemoteBus(configurator);

            configurator.Subscribe(cf =>
                {
                    cf.Handler<MyMessage>(message => receivedMessages.Add(1));
                    cf.Handler<MyMessage>(message => receivedMessages.Add(2));
                });
        }
        /// <summary>
        /// Specifies that the service bus will be using health monitoring. This means that
        /// the bus will publish heart beats and respond to ping messages. For more information,
        /// see http://readthedocs.org/docs/masstransit/en/latest/overview/standardservices.html
        /// </summary>
        /// <param name="configurator">Configurator that the extension method is invoked upon.</param>
        /// <param name="heartbeatInterval">The heartbeat interval in seconds (one heartbeat evey n seconds)</param>
        public static void UseHealthMonitoring(this ServiceBusConfigurator configurator, int heartbeatInterval)
        {
            var serviceConfigurator = new HealthClientConfigurator();

            serviceConfigurator.SetHeartbeatInterval(heartbeatInterval);

            var busConfigurator = new CustomBusServiceConfigurator(serviceConfigurator);

            configurator.AddBusConfigurator(busConfigurator);
        }
Пример #21
0
        public static void VerifyMsmqConfiguration(this ServiceBusConfigurator configurator)
        {
            var management = new MsmqManagement();

            if (!management.IsInstalled())
            {
                management.Install();
            }

            management.Start();
        }
Пример #22
0
        public static void EnableMessageTracing(this ServiceBusConfigurator configurator)
        {
            var busConfigurator = new PostCreateBusBuilderConfigurator(bus =>
            {
                var service = new MessageTraceBusService(bus.EventChannel);

                bus.AddService(BusServiceLayer.Network, service);
            });

            configurator.AddBusConfigurator(busConfigurator);
        }
Пример #23
0
        protected override void ConfigureLocalBus(ServiceBusConfigurator configurator)
        {
            configurator.Subscribe(x => x.Handler <Message <int> >((context, message) =>
            {
                _called.Set(message);

                context.Respond(new Message <string> {
                    Body = message.Body.ToString()
                });
            }));
        }
Пример #24
0
        public static void UseSubscriptionService(this ServiceBusConfigurator configurator,
                                                  Action <SubscriptionClientConfigurator> configureCallback)
        {
            var clientConfigurator = new SubscriptionClientConfiguratorImpl();

            configureCallback(clientConfigurator);

            configurator.AddSubscriptionCoordinatorConfigurator(new SubscriptionRouterBuilderConfiguratorImpl(x => x.SetNetwork(null)));

            configurator.AddSubscriptionObserver(clientConfigurator.Create);
        }
Пример #25
0
        protected override void ConfigureLocalBus(ServiceBusConfigurator configurator)
        {
            base.ConfigureLocalBus(configurator);

            configurator.Subscribe(sc =>
            {
                sc.Handler <FirstLevelInterface>(msg => ReceiveAndCaptureException(_first, msg));
                sc.Handler <SecondLevelInterface>(msg => ReceiveAndCaptureException(_second, msg));
                sc.Handler <ThirdLevelInterface>(msg => ReceiveAndCaptureException(_third, msg));
            });
        }
Пример #26
0
        public static void AddOutboundInterceptor(this ServiceBusConfigurator configurator, IOutboundMessageInterceptor interceptor)
        {
            var builderConfigurator = new PostCreateBusBuilderConfigurator(bus =>
            {
                var interceptorConfigurator = new OutboundMessageInterceptorConfigurator(bus.OutboundPipeline);

                interceptorConfigurator.Create(interceptor);
            });

            configurator.AddBusConfigurator(builderConfigurator);
        }
        public LoopbackLocalRemoteBusScenarioBuilder()
        {
            _settings = new ServiceBusDefaultSettings();
            _settings.ConcurrentConsumerLimit = 4;
            _settings.ReceiveTimeout          = 50.Milliseconds();

            _localConfigurator = new ServiceBusConfigurator(_settings);
            _localConfigurator.ReceiveFrom(DefaultLocalUri);

            _remoteConfigurator = new ServiceBusConfigurator(_settings);
            _remoteConfigurator.ReceiveFrom(DefaultRemoteUri);
        }
        public static void ImplementDistributorWorker <TMessage>(this ServiceBusConfigurator configurator,
                                                                 Func <TMessage, Action <TMessage> > getConsumer, int inProgressLimit, int pendingLimit)
            where TMessage : class
        {
            var settings = new WorkerSettings
            {
                InProgressLimit = inProgressLimit,
                PendingLimit    = pendingLimit
            };

            configurator.AddService(BusServiceLayer.Presentation, () => new Worker <TMessage>(getConsumer, settings));
        }
Пример #29
0
        /// <summary>
        /// Use MSMQ, and allow the configuration of additional options, such as Multicast or SubscriptionService usage
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="configurator"></param>
        /// <param name="callback"></param>
        /// <returns></returns>
        public static ServiceBusConfigurator UseMsmq(this ServiceBusConfigurator configurator,
                                                     Action <MsmqConfigurator> callback)
        {
            configurator.AddTransportFactory <MsmqTransportFactory>()
            .AddTransportFactory <MulticastMsmqTransportFactory>();

            var msmqConfigurator = new MsmqConfiguratorImpl(configurator);

            callback(msmqConfigurator);

            return(configurator);
        }
        public static void ConfigureService <TServiceConfigurator>(this ServiceBusConfigurator configurator, BusServiceLayer layer,
                                                                   Action <TServiceConfigurator> configure)
            where TServiceConfigurator : BusServiceConfigurator, new()
        {
            var serviceConfigurator = new TServiceConfigurator();

            configure(serviceConfigurator);

            var busConfigurator = new CustomBusServiceConfigurator(serviceConfigurator);

            configurator.AddBusConfigurator(busConfigurator);
        }
        public static ServiceBusConfigurator AddTransportFactory <TTransportFactory>(
            this ServiceBusConfigurator configurator, Action <TTransportFactory> configureFactory)
            where TTransportFactory : ITransportFactory, new()
        {
            return(AddTransportFactory(configurator, () =>
            {
                var transportFactory = new TTransportFactory();
                configureFactory(transportFactory);

                return transportFactory;
            }));
        }
        /// <summary>
        ///   Uses stomp as a transport channel.
        /// </summary>
        /// <param name="configurator"> The servicebus configurator. </param>
        /// <param name="configure"> Stomp transport configuration callback. </param>
        /// <returns> </returns>
        public static ServiceBusConfigurator UseStomp(this ServiceBusConfigurator configurator, Action <ConnectionFactoryConfigurator> configure)
        {
            var factoryConfigurator = new ConnectionFactoryConfiguratorImpl(new ConnectionFactoryDefaultSettings());

            configure(factoryConfigurator);

            var connectionFactory = factoryConfigurator.CreateStompClientFactory();

            configurator.AddTransportFactory <StompTransportFactory>(configureFactory => { configureFactory.SetConnectionFactory(connectionFactory); });
            configurator.UseJsonSerializer();

            return(configurator);
        }
        protected override void ConfigureRemoteBus(ServiceBusConfigurator configurator)
        {
            base.ConfigureRemoteBus(configurator);

            _baseMessage = new Future <BaseMessage>();
            _message     = new Future <Message>();

            configurator.Subscribe(cf =>
            {
                cf.Handler <BaseMessage>(message => _baseMessage.Complete(message));
                cf.Handler <Message>(message => _message.Complete(message));
            });
        }
Пример #34
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);
        }
Пример #35
0
		protected override void ConfigureRemoteBus(ServiceBusConfigurator configurator)
		{
			base.ConfigureRemoteBus(configurator);

			_baseMessage = new Future<BaseMessage>();
			_message = new Future<Message>();

			configurator.Subscribe(cf =>
				{
					cf.Handler<BaseMessage>(message => _baseMessage.Complete(message));
					cf.Handler<Message>(message => _message.Complete(message));
				});
		}
        protected override void ConfigureServiceBus(Uri uri, ServiceBusConfigurator configurator)
        {
            base.ConfigureServiceBus(uri, configurator);

            _received  = new Future <A>();
            _receivedB = new Future <B>();

            configurator.Subscribe(s =>
            {
                s.Handler <A>(message => _received.Complete(message));
                s.Handler <B>(message => _receivedB.Complete(message));
            });
        }
Пример #37
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);
        }
        public static void Environments(this ServiceBusConfigurator configurator,
                                        Action <EnvironmentsConfigurator> configureCallback)
        {
            var environmentsConfigurator = new EnvironmentsConfiguratorImpl();

            configureCallback(environmentsConfigurator);

            IServiceBusEnvironment environment = environmentsConfigurator.GetCurrentEnvironment();

            if (environment != null)
            {
                environment.Configure(configurator);
            }
        }
Пример #39
0
        /// <summary>
        /// Configure the control bus, giving the caller the option of adding additional subscriptions to the control bus
        /// </summary>
        /// <param name="configurator"></param>
        /// <param name="subscribeCallback"></param>
        /// <returns></returns>
        public ServiceBusConfigurator ConfigureControlBus(ServiceBusConfigurator configurator, Action<SubscriptionBusServiceConfigurator> subscribeCallback)
        {
            // we need a nice, ordered arrival of messages here
            configurator.SetConcurrentConsumerLimit(1);

            configurator.Subscribe(x =>
                {
                    // this is registered as transient because the control bus should not get messages
                    // when it isn't running (and should be a temporary queue as well)
                    x.Consumer(() => new ServiceNodeConsumer(_nodeState.CurrentBehavior))
                        .Transient();
                });

            return configurator;
        }
Пример #40
0
        public static void UseRabbitMqRouting(this ServiceBusConfigurator configurator)
        {
            configurator.SetSubscriptionObserver((bus, coordinator) => new RabbitMqSubscriptionBinder(bus));

            var busConfigurator = new PostCreateBusBuilderConfigurator(bus =>
            {
                var interceptorConfigurator = new OutboundMessageInterceptorConfigurator(bus.OutboundPipeline);

                interceptorConfigurator.Create(new PublishEndpointInterceptor(bus));
            });

            configurator.AddBusConfigurator(busConfigurator);

            configurator.UseRabbitMq();
        }
Пример #41
0
        /// <summary>
        /// Configure the control bus, giving the caller the option of adding additional subscriptions to the control bus
        /// </summary>
        /// <param name="configurator"></param>
        /// <param name="subscribeCallback"></param>
        /// <returns></returns>
        public ServiceBusConfigurator ConfigureControlBus(ServiceBusConfigurator configurator, Action <SubscriptionBusServiceConfigurator> subscribeCallback)
        {
            // we need a nice, ordered arrival of messages here
            configurator.SetConcurrentConsumerLimit(1);

            configurator.Subscribe(x =>
            {
                // this is registered as transient because the control bus should not get messages
                // when it isn't running (and should be a temporary queue as well)
                x.Consumer(() => new ServiceNodeConsumer(_nodeState.CurrentBehavior))
                .Transient();
            });

            return(configurator);
        }
Пример #42
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);
                }));
            });
        }
        void ITransportConfigurator.Configure(ServiceBusConfigurator configurator, string queueName, int? consumerLimit)
        {
            Uri receiveFrom = _settings.GetQueueAddress(queueName, consumerLimit);

            configurator.UseRabbitMq(x =>
                {
                    x.ConfigureHost(receiveFrom, h =>
                        {
                            h.SetUsername(_settings.Username);
                            h.SetPassword(_settings.Password);
                            h.SetRequestedHeartbeat(_settings.Heartbeat);
                        });
                });

            configurator.ReceiveFrom(receiveFrom);
            if (consumerLimit.HasValue)
                configurator.SetConcurrentConsumerLimit(consumerLimit.Value);
        }
Пример #44
0
        protected override void ConfigureLocalBus(ServiceBusConfigurator configurator)
        {
            base.ConfigureLocalBus(configurator);

            // this is our dependency, but could be dynamically resolved from a container in method
            // below is so desired.
            var dependency = new Dependency();

            // create the actual saga repository
            ISagaRepository<InjectingSampleSaga> sagaRepository = SetupSagaRepository<InjectingSampleSaga>();

            // decorate the saga repository with the injecting repository, specifying the property and a
            // lambda method to return the property value given the saga instance that was loaded
            // allows properties of the saga to be used in the resolution of the dependency
            ISagaRepository<InjectingSampleSaga> injectingRepository =
                InjectingSagaRepository<InjectingSampleSaga>.Create(sagaRepository,
                    x => x.Dependency, saga => dependency);

            // subscribe the decorated saga repository to the bus during configuration
            configurator.Subscribe(x => x.Saga(injectingRepository));
        }
        protected override void ConfigureRemoteBus(ServiceBusConfigurator configurator)
        {
            base.ConfigureRemoteBus(configurator);

            configurator.UseNHibernateSubscriptionStorage(_sessionFactory);

            configurator.Subscribe(x => { x.Handler<Hello>(message => { }); });
        }
        protected override void ConfigureLocalBus(ServiceBusConfigurator configurator)
        {
            base.ConfigureRemoteBus(configurator);

            configurator.UseNHibernateSubscriptionStorage(_sessionFactory);

            base.ConfigureLocalBus(configurator);
        }
 public void Config(IComponentContext container, ServiceBusConfigurator busConfig)
 {
     busConfig.UseRabbitMq();
     busConfig.ReceiveFrom(receiveFromEndPoint);
 }
Пример #48
0
 public void ApplyGlobalConfig(ServiceBusConfigurator sbc)
 {
     serviceBusConfigurations(sbc);
 }
 public ClusterConfigurator(ServiceBusConfigurator configurator)
 {
     BusConfigurator = configurator;
 }
Пример #50
0
        protected override void ConfigureRemoteBus(ServiceBusConfigurator configurator)
        {
            base.ConfigureRemoteBus(configurator);

            configurator.Subscribe(x => x.Handler<Request>((context, message) => context.Respond(new Response())));
        }
 protected override void ConfigureServiceBus(Uri uri, ServiceBusConfigurator configurator)
 {
     base.ConfigureServiceBus(uri, configurator);
     configurator.UseControlBus();
     _received = new Future<A>();
 }
        protected override void ConfigureLocalBus(ServiceBusConfigurator configurator)
        {
            base.ConfigureLocalBus(configurator);

            configurator.Subscribe(s => { s.Handler<BadMessage>(x => { }); });
        }
        protected override void ConfigureRemoteBus(ServiceBusConfigurator configurator)
        {
            base.ConfigureRemoteBus(configurator);

            configurator.Subscribe(x =>
                {
                    x.Handler<PingMessage>((context, message) =>
                        {
                            _pingReceived.Set(message);
                            context.Respond(new PongMessage {TransactionId = message.TransactionId});
                        });
                });
        }
Пример #54
0
 protected virtual void ConfigureLocalBus(ServiceBusConfigurator configurator)
 {
     configurator.ReceiveFrom(_localUri);
 }
 protected virtual void ConfigureLocalBus(ServiceBusConfigurator configurator)
 {
 }
 protected override void ConfigureServiceBus(Uri uri, ServiceBusConfigurator configurator)
 {
     configurator.UseStomp(configuration => configuration.UseBuildMethod(address => new StompClient(new InMemoryTransport(_inMemoryListener))));
 }
 protected virtual void ConfigureRemoteBus(ServiceBusConfigurator configurator)
 {
 }
Пример #58
0
		protected override void ConfigureRemoteBus(ServiceBusConfigurator configurator)
		{
			base.ConfigureRemoteBus(configurator);

			configurator.Subscribe(x => x.Consumer<TestReplyService<PingMessage, Guid, PongMessage>>());
		}
Пример #59
0
 /// <summary>
 /// Used to configure information about the service bus for processing
 /// </summary>
 /// <param name="configurator"></param>
 /// <returns></returns>
 public ServiceBusConfigurator ConfigureServiceBus(ServiceBusConfigurator configurator)
 {
     return configurator;
 }
		protected override void ConfigureRemoteBus(ServiceBusConfigurator configurator)
		{
			base.ConfigureRemoteBus(configurator);

			configurator.SetNetwork("ONE");
		}