Exemple #1
0
        public override Task InvokeAsync(IPipeContext context, CancellationToken token)
        {
            var config = ExtractConfigFromMessageType(context) ?? ExtractConfigFromStrings(context);

            if (config == null)
            {
                _logger.Warn("Unable to find PublisherConfiguration from message type or parameters.");
                throw new ArgumentNullException(nameof(config));
            }

            var action = context.Get <Action <IPublisherConfigurationBuilder> >(PipeKey.ConfigurationAction);

            if (action != null)
            {
                _logger.Debug($"Custom configuration supplied. Applying.");
                var builder = new PublisherConfigurationBuilder(config);
                action(builder);
                config = builder.Config;
            }

            context.Properties.TryAdd(PipeKey.PublisherConfiguration, config);
            context.Properties.TryAdd(PipeKey.BasicPublishConfiguration, config);
            context.Properties.TryAdd(PipeKey.ExchangeDeclaration, config.Exchange);
            context.Properties.TryAdd(PipeKey.BasicProperties, config.BasicProperties);
            context.Properties.TryAdd(PipeKey.ReturnCallback, config.ReturnCallback);

            return(Next.InvokeAsync(context, token));
        }
        public IRequestConfigurationBuilder PublishRequest(Action <IPublisherConfigurationBuilder> publish)
        {
            var builder = new PublisherConfigurationBuilder(Config.Request);

            publish(builder);
            Config.Request = builder.Config;
            return(this);
        }