public ReadOnlyMemory <IClientPipe> BuildActionPipeline() { var pipes = new List <IClientPipe>(); if (Retry != null) { pipes.Add(Retry.BuildPipe()); } pipes.Add(new ConnectionClientPipe(RabbitMqConnectionManager, ChannelType.Publish)); pipes.AddRange(CustomPipes .Where(builder => builder is IActionClientPipeBuilder || builder is IGenericClientPipeBuilder) .Select(builder => { if (builder is IActionClientPipeBuilder messagePipeBuilder) { return(messagePipeBuilder.BuildPipe() as IClientPipe); } if (builder is IGenericClientPipeBuilder genericPipeBuilder) { return(genericPipeBuilder.BuildPipe() as IClientPipe); } throw new NotSupportedException($"Builder {builder} is not supported"); }) ); pipes.Add(new ExecuteActionClientPipe()); return(new ReadOnlyMemory <IClientPipe>(pipes.ToArray())); }
public ReadOnlyMemory <IClientPipe> BuildConsumerPipeline() { var pipes = new List <IClientPipe>(); if (Retry != null) { pipes.Add(Retry.BuildPipe()); } pipes.Add(new PersistentConnectionClientPipe(RabbitMqConnectionManager, ChannelType.Consumer)); pipes.Add(new ExecuteActionClientPipe()); return(new ReadOnlyMemory <IClientPipe>(pipes.ToArray())); }
public ReadOnlyMemory <IClientPipe> BuildMessagePipeline() { if (Serialization == null) { throw new InvalidRabbitMqOptionException("Please provide serialization to build message pipeline"); } var pipes = new List <IClientPipe>(); if (Retry != null) { pipes.Add(Retry.BuildPipe()); } pipes.Add(new ConnectionClientPipe(RabbitMqConnectionManager, ChannelType.Publish)); pipes.Add(new SerializerClientPipe(Serialization)); if (PerMessageTtl != null) { pipes.Add(new MessageTtlClientPipe(PerMessageTtl.PerMessageTTl)); } pipes.AddRange(CustomPipes .Where(builder => builder is IMessageClientPipeBuilder || builder is IGenericClientPipeBuilder) .Select(builder => { if (builder is IMessageClientPipeBuilder messagePipeBuilder) { return(messagePipeBuilder.BuildPipe() as IClientPipe); } if (builder is IGenericClientPipeBuilder genericPipeBuilder) { return(genericPipeBuilder.BuildPipe() as IClientPipe); } throw new NotSupportedException($"Builder {builder} is not supported"); }) ); pipes.Add(new PublishClientPipe(DeliveryMode)); return(new ReadOnlyMemory <IClientPipe>(pipes.ToArray())); }