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);
        }
Пример #3
0
        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);
        }
Пример #4
0
    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);
    }