Пример #1
0
        /// <summary>
        /// Sets the number of concurrent receive threads that can execute simultaneously. In many cases, such as when
        /// using non-transactional transports, this can lead to very-bad-things(TM)
        /// </summary>
        /// <param name="configurator"></param>
        /// <param name="concurrentReceiverLimit"></param>
        public static void SetConcurrentReceiverLimit(this ServiceBusConfigurator configurator, int concurrentReceiverLimit)
        {
            var controlBusConfigurator =
                new PostCreateBusBuilderConfigurator(bus => { bus.ConcurrentReceiveThreads = concurrentReceiverLimit; });

            configurator.AddBusConfigurator(controlBusConfigurator);
        }
        public static void AddService <TService>(this ServiceBusConfigurator configurator, BusServiceLayer layer, Func <TService> serviceFactory)
            where TService : IBusService
        {
            var serviceConfigurator = new DefaultBusServiceConfigurator <TService>(layer, bus => serviceFactory());

            configurator.AddBusConfigurator(serviceConfigurator);
        }
Пример #3
0
        public static void SetShutdownTimeout(this ServiceBusConfigurator configurator, TimeSpan timeout)
        {
            var controlBusConfigurator =
                new PostCreateBusBuilderConfigurator(bus => { bus.ShutdownTimeout = timeout; });

            configurator.AddBusConfigurator(controlBusConfigurator);
        }
        /// <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 void UseControlBus(this ServiceBusConfigurator configurator, Action <ControlBusConfigurator> configure)
        {
            var controlBusConfigurator = new ControlBusConfiguratorImpl();

            configure(controlBusConfigurator);

            configurator.AddBusConfigurator(controlBusConfigurator);
        }
Пример #5
0
        public static void EnableRemoteIntrospection(this ServiceBusConfigurator configurator)
        {
            var serviceConfigurator = new IntrospectionServiceConfigurator();

            var busConfigurator = new CustomBusServiceConfigurator(serviceConfigurator);

            configurator.AddBusConfigurator(busConfigurator);
        }
Пример #6
0
        public static void Distributor(this ServiceBusConfigurator configurator,
                                       Action <DistributorBusServiceConfigurator> configure)
        {
            var subscriptionConfigurator = new DistributorBusServiceConfiguratorImpl();

            configure(subscriptionConfigurator);

            configurator.AddBusConfigurator(subscriptionConfigurator);
        }
Пример #7
0
        public static void Subscribe(this ServiceBusConfigurator configurator,
                                     Action <SubscriptionBusServiceConfigurator> configure)
        {
            var subscriptionConfigurator = new SubscriptionBusServiceConfiguratorImpl();

            configure(subscriptionConfigurator);

            configurator.AddBusConfigurator(subscriptionConfigurator);
        }
        public static void Worker(this ServiceBusConfigurator configurator,
                                  Action <WorkerBusServiceConfigurator> configure)
        {
            var workerConfigurator = new WorkerBusServiceConfiguratorImpl();

            configure(workerConfigurator);

            configurator.AddBusConfigurator(workerConfigurator);
        }
Пример #9
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>());
        }
        /// <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);
        }
Пример #11
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);
        }
Пример #12
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 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);
        }
Пример #14
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();
        }
        /// <summary>
        /// Specifies that RabbitMQ should be added as a transport for the service bus.
        /// </summary>
        /// <param name="configurator"></param>
        /// <returns></returns>
        public static ServiceBusConfigurator UseRabbitMq(this ServiceBusConfigurator configurator)
        {
            configurator.SetSubscriptionObserver((bus, coordinator) => new RabbitMqSubscriptionBinder(bus));

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

                // make sure we publish correctly through this interceptor; works on the outgoing pipeline
                interceptorConfigurator.Create(new PublishEndpointInterceptor(bus));
            });

            configurator.AddBusConfigurator(busConfigurator);

            return(UseRabbitMq <ServiceBusConfigurator>(configurator));
        }
        /// <summary>
        /// Specifies that RabbitMQ should be added as a transport for the service bus. Includes a callback
        /// that can configure additional settings on the transport, such as SSL.
        /// </summary>
        /// <param name="configurator"></param>
        /// <param name="configureFactory"></param>
        /// <returns></returns>
        public static void UseRabbitMq(this ServiceBusConfigurator configurator,
                                       Action <RabbitMqTransportFactoryConfigurator> configureFactory)
        {
            configurator.SetSubscriptionObserver((bus, coordinator) => new RabbitMqSubscriptionBinder(bus));

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

                // make sure we publish correctly through this interceptor; works on the outgoing pipeline
                interceptorConfigurator.Create(new PublishEndpointInterceptor(bus));
            });

            configurator.AddBusConfigurator(busConfigurator);

            UseRabbitMq((EndpointFactoryConfigurator)configurator, configureFactory);
        }
Пример #17
0
        /// <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 void SetReceiveTimeout(this ServiceBusConfigurator configurator, TimeSpan receiveTimeout)
        {
            var controlBusConfigurator = new PostCreateBusBuilderConfigurator(bus => { bus.ReceiveTimeout = receiveTimeout; });

            configurator.AddBusConfigurator(controlBusConfigurator);
        }