/// <summary>
        /// Enable the loading of message data for the specified message type. Message data is large data that is
        /// stored outside of the messaging system.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="configurator"></param>
        /// <param name="repository"></param>
        public static void UseMessageData <T>(this IPipeConfigurator <ConsumeContext <T> > configurator, IMessageDataRepository repository)
            where T : class
        {
            var transformConfigurator = new ConsumeTransformSpecification <T>();

            transformConfigurator.LoadMessageData(repository);

            configurator.AddPipeSpecification(transformConfigurator);
        }
        /// <summary>
        /// Apply a message transform, the behavior of which is defined inline using the configurator
        /// </summary>
        /// <typeparam name="T">The message type</typeparam>
        /// <param name="configurator">The consume pipe configurator</param>
        /// <param name="configure">The configuration callback</param>
        public static void UseTransform <T>(this IPipeConfigurator <ConsumeContext <T> > configurator, Action <ITransformConfigurator <T> > configure)
            where T : class
        {
            var specification = new ConsumeTransformSpecification <T>();

            configure(specification);

            configurator.AddPipeSpecification(specification);
        }
        /// <summary>
        /// Enable the loading of message data for the specified message type. Message data is large data that is
        /// stored outside of the messaging system.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="configurator"></param>
        /// <param name="repository"></param>
        /// <param name="configureCallback"></param>
        public static void UseMessageData <T>(this IConsumePipeConfigurator configurator, IMessageDataRepository repository,
                                              Action <ITransformConfigurator <T> > configureCallback)
            where T : class
        {
            var transformConfigurator = new ConsumeTransformSpecification <T>();

            transformConfigurator.LoadMessageData(repository);

            configureCallback(transformConfigurator);

            configurator.AddPipeSpecification(transformConfigurator);
        }