/// <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>
        public static void UseDistributorFor <T>(this ServiceBusConfigurator configurator)
            where T : class
        {
            configurator.AddService(BusServiceLayer.Presentation, () => new Distributor <T>());

            configurator.SetReceiveTimeout(50.Milliseconds());
        }
        /// <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());
        }