/// <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)); }
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)); }
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); }
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); }
/// <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)); }