Esempio n. 1
0
 /// <summary>
 ///   Declare exchange to exchange binding
 /// </summary>
 public static IRabbitMQExchangeBuilder BoundTo(
     this IRabbitMQExchangeBuilder builder,
     IRabbitMQExchangeBuilderCore exchange,
     Action <IRabbitMQExchangeBindingBuilder> binding = null)
 {
     return(builder.BoundTo <IRabbitMQExchangeBuilder>(exchange, binding));
 }
Esempio n. 2
0
        private static TBuilder AlternateTo <TBuilder>(
            this TBuilder builder,
            IRabbitMQExchangeBuilderCore exchange)
            where TBuilder : IRabbitMQExchangeBuilderCore
        {
            if (exchange is null)
            {
                throw new ArgumentNullException(nameof(exchange));
            }

            return(builder.Argument("alternate-exchange", exchange.ExchangeDeclaration.Name));
        }
Esempio n. 3
0
        private static IRabbitMQProducerBuilder <TPayload> AddProducer <TPayload>(
            this IRabbitMQConnectionBuilder connection,
            IRabbitMQExchangeBuilderCore exchange)
        {
            var declaration = new RabbitMQProducerDeclaration(
                typeof(TPayload),
                connection.ConnectionDeclaration,
                exchange.ExchangeDeclaration);

            connection.Services
            .Configure <RabbitMQOptions>(
                options => options.ProducerDeclarations.Add(typeof(TPayload), declaration));

            return(new RabbitMQProducerBuilder <TPayload>(declaration));
        }
        private static IRabbitMQQueueBuilder <TPayload> DeadLetterTo <TPayload>(
            this IRabbitMQQueueBuilder <TPayload> builder,
            IRabbitMQExchangeBuilderCore exchange,
            string routingKey)
        {
            if (exchange is null)
            {
                throw new ArgumentNullException(nameof(exchange));
            }

            if (routingKey != null)
            {
                builder.Argument("x-dead-letter-routing-key", routingKey);
            }

            return(builder.Argument("x-dead-letter-exchange", exchange.ExchangeDeclaration.Name));
        }
        private static IRabbitMQQueueBuilder <TPayload> BoundTo <TPayload>(
            this IRabbitMQQueueBuilder <TPayload> builder,
            IRabbitMQExchangeBuilderCore exchange,
            Action <IRabbitMQQueueBindingBuilder> binding)
        {
            if (exchange is null)
            {
                throw new ArgumentNullException(nameof(exchange));
            }

            var declaration = new RabbitMQQueueBindingDeclaration(exchange.ExchangeDeclaration);

            binding?.Invoke(new RabbitMQQueueBindingBuilder(declaration));

            builder.Declaration.BindingDeclarations.Add(declaration);

            return(builder);
        }
Esempio n. 6
0
        private static TBuilder BoundTo <TBuilder>(
            this TBuilder builder,
            IRabbitMQExchangeBuilderCore exchange,
            Action <IRabbitMQExchangeBindingBuilder> binding)
            where TBuilder : IRabbitMQExchangeBuilderCore
        {
            if (exchange is null)
            {
                throw new ArgumentNullException(nameof(exchange));
            }

            var declaration = new RabbitMQExchangeBindingDeclaration(exchange.ExchangeDeclaration);

            binding?.Invoke(new RabbitMQExchangeBindingBuilder(declaration));

            builder.ExchangeDeclaration.BindingDeclarations.Add(declaration);

            return(builder);
        }
Esempio n. 7
0
 /// <summary>
 ///   Declare alternate-exchange argument. When message can't be routed in current exchange,
 ///   instead of mark as dead, publish to specified exchange
 /// </summary>
 public static IRabbitMQExchangeBuilder AlternateTo(
     this IRabbitMQExchangeBuilder builder,
     IRabbitMQExchangeBuilderCore exchange)
 {
     return(builder.AlternateTo <IRabbitMQExchangeBuilder>(exchange));
 }