static async Task Send(object message, ValidatorLifecycle lifecycle = ValidatorLifecycle.Endpoint, [CallerMemberName] string key = null) { var configuration = new EndpointConfiguration("FluentValidationOutgoing" + key); configuration.UseTransport <LearningTransport>(); configuration.PurgeOnStartup(true); configuration.DisableFeature <TimeoutManager>(); var validation = configuration.UseFluentValidation(lifecycle, incoming: false); validation.AddValidatorsFromAssemblyContaining <MessageWithNoValidator>(); var endpoint = await Endpoint.Start(configuration); await endpoint.SendLocal(message); }
internal FluentValidationConfig(EndpointConfiguration endpoint, ValidatorLifecycle validatorLifecycle) { this.endpoint = endpoint; if (validatorLifecycle == ValidatorLifecycle.Endpoint) { dependencyLifecycle = DependencyLifecycle.SingleInstance; } else { dependencyLifecycle = DependencyLifecycle.InstancePerCall; } var validatorTypeCache = GetValidatorTypeCache(); MessageValidator = new(validatorTypeCache); }
public static FluentValidationConfig UseFluentValidation( this EndpointConfiguration endpoint, ValidatorLifecycle lifecycle = ValidatorLifecycle.Endpoint, bool incoming = true, bool outgoing = true) { Guard.AgainstNull(endpoint, nameof(endpoint)); var recoverability = endpoint.Recoverability(); recoverability.AddUnrecoverableException <MessageValidationException>(); FluentValidationConfig config = new(endpoint, lifecycle); var pipeline = endpoint.Pipeline; if (incoming) { pipeline.Register(new IncomingValidationStep(config)); } if (outgoing) { pipeline.Register(new OutgoingValidationStep(config)); } return(config); }
static async Task <ValidationException> Send(object message, ValidatorLifecycle lifecycle = ValidatorLifecycle.Endpoint, [CallerMemberName] string key = null) { var configuration = new EndpointConfiguration("FluentValidationIncoming" + key); configuration.UseTransport <LearningTransport>(); configuration.PurgeOnStartup(true); configuration.DisableFeature <TimeoutManager>(); var resetEvent = new ManualResetEvent(false); configuration.RegisterComponents(components => components.RegisterSingleton(resetEvent)); ValidationException exception = null; var recoverability = configuration.Recoverability(); recoverability.CustomPolicy( (config, context) => { exception = (ValidationException)context.Exception; resetEvent.Set(); return(RecoverabilityAction.MoveToError("error")); }); var validation = configuration.UseFluentValidation(lifecycle, outgoing: false); validation.AddValidatorsFromAssemblyContaining <MessageWithNoValidator>(); var endpoint = await Endpoint.Start(configuration); await endpoint.SendLocal(message); if (!resetEvent.WaitOne(TimeSpan.FromSeconds(2))) { throw new Exception("No Set received."); } return(exception); }