public IConsumerConfigurationBuilder Consume(Action <IConsumeConfigurationBuilder> consume)
        {
            var builder = new ConsumeConfigurationBuilder(Config.Consume);

            consume(builder);
            Config.Consume = builder.Config;
            if (builder.ExistingExchange)
            {
                Config.Exchange = null;
            }
            if (builder.ExistingQueue)
            {
                Config.Queue = null;
            }
            return(this);
        }
        public override async Task InvokeAsync(IPipeContext context, CancellationToken token)
        {
            var config = ExtractConfigFromMessageType(context) ?? ExtractConfigFromStrings(context);

            var action = GetConfigurationAction(context);

            if (action != null)
            {
                Logger.LogInformation("Configuration action for {queueName} found.", config?.QueueName);
                var builder = new ConsumeConfigurationBuilder(config);
                action(builder);
                config = builder.Config;
            }

            context.Properties.TryAdd(PipeKey.ConsumeConfiguration, config);

            await Next.InvokeAsync(context, token);
        }