/// <summary>
        /// Configures a Turnout on the receive endpoint, which executes a long-running job and supervises the job until it
        /// completes.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="configurator">The receive endpoint configurator</param>
        /// <param name="busFactoryConfigurator">The bus factory configuration to use a separate endpoint for the control traffic</param>
        /// <param name="configure"></param>
        public static void Turnout <T>(this IRabbitMqReceiveEndpointConfigurator configurator, IRabbitMqBusFactoryConfigurator busFactoryConfigurator,
                                       Action <ITurnoutHostConfigurator <T> > configure)
            where T : class
        {
            var temporaryQueueName = busFactoryConfigurator.GetTemporaryQueueName("turnout-");

            busFactoryConfigurator.ReceiveEndpoint(configurator.Host, temporaryQueueName, turnoutEndpointConfigurator =>
            {
                turnoutEndpointConfigurator.AutoDelete = true;
                turnoutEndpointConfigurator.Durable    = false;

                configurator.ConfigureTurnoutEndpoints(busFactoryConfigurator, turnoutEndpointConfigurator, configure);
            });
        }