示例#1
0
        public static IServiceBusConfigurator UsePublisherConfirms(this IServiceBusConfigurator configurator, PublishSettings publishSettings)
        {
            var confirmer = publishSettings.Confirmer;

            configurator.UseRabbitMq(conf => conf.UsePublisherConfirms(confirmer.RecordPublicationSuccess, confirmer.RecordPublicationFailure, publishSettings.TestNacks));
            return(configurator);
        }
        /// <summary>
        /// Sets the receive timeout on the service bus endpoint receiver. Settings this to a lower value has limited
        /// benefit other than in unit testing to reduce bus disposal time
        /// </summary>
        /// <param name="configurator"></param>
        /// <param name="receiveTimeout"></param>
        public static IServiceBusConfigurator SetReceiveTimeout(this IServiceBusConfigurator configurator, TimeSpan receiveTimeout)
        {
            var controlBusConfigurator = new PostCreateBusBuilderConfigurator(bus => { bus.ReceiveTimeout = receiveTimeout; });

            configurator.AddBusConfigurator(controlBusConfigurator);
            return(configurator);
        }
        protected override void ConfigureServiceBus(Uri uri, IServiceBusConfigurator configurator)
        {
            base.ConfigureServiceBus(uri, configurator);

            configurator.AddService <SubscriptionPublisher>();
            configurator.AddService <SubscriptionConsumer>();
        }
示例#4
0
        public void ApplyTo(IServiceBusConfigurator configurator)
        {
            if (ObjectBuilder != null)
            {
                configurator.SetObjectBuilder(ObjectBuilder);
            }

            if (ErrorUri != null)
            {
                configurator.SendErrorsTo(ErrorUri);
            }

            configurator.SetReceiveTimeout(ReceiveTimeout);
            configurator.SetConcurrentConsumerLimit(ConcurrentConsumerLimit);
            configurator.SetConcurrentReceiverLimit(ConcurrentReceiverLimit);

            if (!AutoStart)
            {
                configurator.DisableAutoStart();
            }
            if (AutoSubscribe)
            {
                configurator.EnableAutoSubscribe();
            }
        }
        protected override void ConfigureServiceBus(Uri uri, IServiceBusConfigurator configurator)
        {
            base.ConfigureServiceBus(uri, configurator);

            configurator.UseControlBus();
            configurator.UseSubscriptionService(SubscriptionUri);
        }
        protected override void ConfigureServiceBus(Uri uri, IServiceBusConfigurator configurator)
        {
            base.ConfigureServiceBus(uri, configurator);

            _consumer = new SelectiveConsumer();
            configurator.Subscribe(s => s.Instance(_consumer));
        }
        /// <summary>
        /// Implements a distributor-to-worker pattern for the given message type.
        /// </summary>
        /// <typeparam name="T">The type of message to use the distributor</typeparam>
        /// <param name="configurator">Service bus to implement the distributor</param>
        /// <param name="endpointFactory">Factory to generate endpoints from a given URL</param>
        public static void UseDistributorFor <T>(this IServiceBusConfigurator configurator, IEndpointFactory endpointFactory)
            where T : class
        {
            configurator.AddService(() => new Distributor <T>(endpointFactory));

            configurator.SetReceiveTimeout(50.Milliseconds());
        }
示例#8
0
        protected override void ConfigureServiceBus(Uri uri, IServiceBusConfigurator configurator)
        {
            base.ConfigureServiceBus(uri, configurator);
            _received = new Future <TestMessage>();

            configurator.Subscribe(s => s.Handler <TestMessage>(message => _received.Complete(message)));
        }
示例#9
0
        protected override void ConfigureLocalBus(IServiceBusConfigurator configurator)
        {
            base.ConfigureLocalBus(configurator);

            _timeoutSagaRepository = SetupSagaRepository <TimeoutSaga>();

            configurator.Subscribe(s => { s.Saga(_timeoutSagaRepository); });
        }
示例#10
0
        protected override void ConfigureServiceBus(Uri uri, IServiceBusConfigurator configurator)
        {
            base.ConfigureServiceBus(uri, configurator);

            _received = new Future <A>();

            configurator.Subscribe(x => x.Handler <A>(msg => _received.Complete(msg)));
        }
示例#11
0
 /// <summary>
 /// You can override to configure the local bus; but if you don't call base method,
 /// you will not get the subscription loopback router.
 /// </summary>
 /// <param name="configurator"></param>
 protected virtual void ConfigureLocalBus(IServiceBusConfigurator configurator)
 {
     configurator.AddSubscriptionObserver((bus, coordinator) =>
     {
         _localLoopback = new SubscriptionLoopback(bus, coordinator);
         return(_localLoopback);
     });
 }
示例#12
0
        protected override void ConfigureLocalBus(IServiceBusConfigurator configurator)
        {
            base.ConfigureLocalBus(configurator);

            configurator.UseJsonSerializer();

            configurator.Subscribe(s => s.Handler <B>(_responseReceived.Complete));
        }
        /// <summary>
        /// Implements a distributor-to-worker pattern for the given message type.
        /// </summary>
        /// <typeparam name="T">The type of to use the distributor</typeparam>
        /// <typeparam name="K">The <code>IWorkerSelectionStrategy</code> used to pick
        /// which worker node to send a message</typeparam>
        /// <param name="configurator">Service bus to implement the distributor</param>
        /// <param name="endpointFactory">Factory to generate endpoints from a given URL</param>
        public static void UseDistributorFor <T, K>(this IServiceBusConfigurator configurator, IEndpointFactory endpointFactory)
            where T : class
            where K : class, IWorkerSelectionStrategy <T>, new()
        {
            configurator.AddService(() => new Distributor <T>(endpointFactory, new K()));

            configurator.SetReceiveTimeout(50.Milliseconds());
        }
        public static IServiceBusConfigurator SetShutdownTimeout(this IServiceBusConfigurator configurator, TimeSpan timeout)
        {
            var controlBusConfigurator =
                new PostCreateBusBuilderConfigurator(bus => { bus.ShutdownTimeout = timeout; });

            configurator.AddBusConfigurator(controlBusConfigurator);
            return(configurator);
        }
示例#15
0
        public static IServiceBusConfigurator SetConcurrentConsumerLimit(this IServiceBusConfigurator configurator, int concurrentConsumerLimit)
        {
            var controlBusConfigurator =
                new PostCreateBusBuilderConfigurator(bus => { bus.MaximumConsumerThreads = concurrentConsumerLimit; });

            configurator.AddBusConfigurator(controlBusConfigurator);
            return(configurator);
        }
示例#16
0
        protected override void ConfigureLocalBus(IServiceBusConfigurator configurator)
        {
            base.ConfigureLocalBus(configurator);

            _received = new FutureMessage <IProxyMe>();

            configurator.Subscribe(x => { x.Handler <IProxyMe>((message) => _received.Set(message)); });
        }
        public static IServiceBusConfigurator AddService <TService>(this IServiceBusConfigurator configurator, IBusServiceLayer layer, Func <TService> serviceFactory)
            where TService : IBusService
        {
            var serviceConfigurator = new DefaultBusServiceConfigurator <TService>(layer, bus => serviceFactory());

            configurator.AddBusConfigurator(serviceConfigurator);
            return(configurator);
        }
        public static void UseSagaDistributorFor <T>(this IServiceBusConfigurator configurator, IEndpointFactory endpointFactory)
            where T : SagaStateMachine <T>, ISaga
        {
            var saga = FastActivator <T> .Create(CombGuid.Generate());

            var serviceConfigurator = new SagaDistributorConfigurator(configurator, endpointFactory);

            saga.EnumerateDataEvents(serviceConfigurator.AddService);
        }
        /// <summary>
        /// Create a control bus, associate it with the ServiceBus being configured, and allow for customization using
        /// the specified method.
        /// </summary>
        /// <param name="configurator"></param>
        /// <param name="configure"></param>
        public static IServiceBusConfigurator UseControlBus(this IServiceBusConfigurator configurator, Action <IControlBusConfigurator> configure)
        {
            var controlBusConfigurator = new ControlBusConfigurator();

            configure(controlBusConfigurator);

            configurator.AddBusConfigurator(controlBusConfigurator);
            return(configurator);
        }
示例#20
0
        protected override void ConfigureLocalBus(IServiceBusConfigurator configurator)
        {
            base.ConfigureLocalBus(configurator);


            _received = new Future <A>();

            configurator.Subscribe(s => s.Handler <A>(message => _received.Complete(message)));
        }
示例#21
0
        public static IServiceBusConfigurator EnableRemoteIntrospection(this IServiceBusConfigurator configurator)
        {
            var serviceConfigurator = new IntrospectionServiceConfigurator();

            var busConfigurator = new CustomBusServiceConfigurator(serviceConfigurator);

            configurator.AddBusConfigurator(busConfigurator);
            return(configurator);
        }
 protected virtual void ConfigureRemoteBus(IServiceBusConfigurator configurator)
 {
     RemoteUri = new Uri("loopback://localhost/mt_server");
     configurator.ReceiveFrom(RemoteUri);
     configurator.AddSubscriptionObserver((bus, coordinator) =>
     {
         _remoteLoopback = new SubscriptionLoopback(bus, coordinator);
         return(_remoteLoopback);
     });
 }
 protected virtual void ConfigureLocalBus(IServiceBusConfigurator configurator)
 {
     LocalUri = new Uri("loopback://localhost/mt_client");
     configurator.ReceiveFrom(LocalUri);
     configurator.AddSubscriptionObserver((bus, coordinator) =>
     {
         _localLoopback = new SubscriptionLoopback(bus, coordinator);
         return(_localLoopback);
     });
 }
示例#24
0
        protected override void ConfigureRemoteBus(IServiceBusConfigurator configurator)
        {
            base.ConfigureRemoteBus(configurator);

            configurator.Subscribe(cf =>
            {
                cf.Handler <MyMessage>(message => receivedMessages.Add(1));
                cf.Handler <MyMessage>(message => receivedMessages.Add(2));
            });
        }
        public static IServiceBusConfigurator AddSubscriptionObserver(this IServiceBusConfigurator configurator,
                                                                      Func <IServiceBus, ISubscriptionRouter, ISubscriptionObserver>
                                                                      observerFactory)
        {
            var coordinatorConfigurator =
                new SubscriptionRouterBuilderConfigurator(x => x.AddObserverFactory(observerFactory));

            configurator.AddSubscriptionRouterConfigurator(coordinatorConfigurator);
            return(configurator);
        }
示例#26
0
        protected override void ConfigureRemoteBus(IServiceBusConfigurator configurator)
        {
            base.ConfigureRemoteBus(configurator);

            configurator.Subscribe(x =>
            {
                x.Handler <A>((context, message) => _receivedA.Set(message));
                x.Handler <B>((context, message) => _receivedB.Set(message));
                x.Handler <C>((context, message) => _receivedC.Set(message));
            });
        }
示例#27
0
        protected override void ConfigureLocalBus(IServiceBusConfigurator configurator)
        {
            configurator.Subscribe(x => x.Handler <Message <int> >((context, message) =>
            {
                _called.Set(message);

                context.Respond(new Message <string> {
                    Body = message.Body.ToString()
                });
            }));
        }
        /// <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 IServiceBusConfigurator UseHealthMonitoring(this IServiceBusConfigurator configurator, int heartbeatInterval)
        {
            var serviceConfigurator = new HealthClientConfigurator();

            serviceConfigurator.SetHeartbeatInterval(heartbeatInterval);

            var busConfigurator = new CustomBusServiceConfigurator(serviceConfigurator);

            configurator.AddBusConfigurator(busConfigurator);
            return(configurator);
        }
        public static IServiceBusConfigurator Subscribe(this IServiceBusConfigurator configurator,
                                                        Action <ISubscriptionBusServiceConfigurator> configure)
        {
            var subscriptionConfigurator = new SubscriptionBusServiceConfigurator();

            configure(subscriptionConfigurator);

            configurator.AddBusConfigurator(subscriptionConfigurator);

            return(configurator);
        }
示例#30
0
        protected override void Load(ContainerBuilder builder)
        {
            builder.RegisterType <Publisher>().As <IPublisher>();
            builder.Register(c => ServiceBusFactory.New(sbc =>
            {
                IServiceBusConfigurator config = c.Resolve <IServiceBusConfigurator>();
                config.Config(c, sbc);
            })).As <IServiceBus>()
            .SingleInstance();

            //builder.RegisterType<ServiceBusAppEventHandler>().As<IAppEventHandler>();
        }
 protected static void ConfigureSubscriptionClient(Uri subscriptionServiceEndpointAddress, IServiceBusConfigurator configurator)
 {
     configurator.ConfigureService<SubscriptionClientConfigurator>(y =>
     {
         // this is fairly easy inline, but wanted to include the example for completeness
         y.SetSubscriptionServiceEndpoint(subscriptionServiceEndpointAddress);
     });
 }
 protected static void ConfigureSubscriptionClient(string subscriptionServiceEndpointAddress, IServiceBusConfigurator configurator)
 {
     ConfigureSubscriptionClient(new Uri(subscriptionServiceEndpointAddress), configurator);
 }
		public void ApplyTo(IServiceBusConfigurator configurator)
		{
			if (ObjectBuilder != null)
				configurator.SetObjectBuilder(ObjectBuilder);

			if (ErrorUri != null)
				configurator.SendErrorsTo(ErrorUri);

			configurator.SetReceiveTimeout(ReceiveTimeout);
			configurator.SetConcurrentConsumerLimit(ConcurrentConsumerLimit);
			configurator.SetConcurrentReceiverLimit(ConcurrentReceiverLimit);

			if (!AutoStart)
				configurator.DisableAutoStart();
			if (AutoSubscribe)
				configurator.EnableAutoSubscribe();
		}
示例#34
0
		protected override void ConfigureLocalBus(IServiceBusConfigurator configurator)
		{
			var mock = MockRepository.GenerateStub<IWorkerSelectionStrategy<FirstCommand>>();
			mock.Stub(x => x.GetAvailableWorkers(null, null, false))
				.IgnoreArguments()
				.Return(new List<WorkerDetails>
					{
						new WorkerDetails
							{
								ControlUri = _nodes["A"].AppendToPath("_control"),
								DataUri = _nodes["A"],
								InProgress = 0,
								InProgressLimit = 100,
								LastUpdate = DateTime.UtcNow
							}
					});

			configurator.UseDistributorFor(EndpointFactory, mock);
		}