Esempio n. 1
0
        /// <summary>
        /// Adds a configuration callback to the builder that is used to configure the receiving endpoint.
        /// </summary>
        /// <param name="builder"><see cref="IReceiveEndpointBuilder{THost,TEndpoint}"/></param>
        /// <param name="endpointConfigurator">The configuration callback to configure the receiving endpoint.</param>
        public static void AddConfigurator <THost, TEndpoint>(this IReceiveEndpointBuilder <THost, TEndpoint> builder, Action <TEndpoint, IServiceProvider> endpointConfigurator)
            where THost : class, IHost
            where TEndpoint : class, IReceiveEndpointConfigurator
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }
            if (endpointConfigurator == null)
            {
                throw new ArgumentNullException(nameof(endpointConfigurator));
            }

            builder.AddConfigurator((host, endpoint, serviceProvider) => endpointConfigurator(endpoint, serviceProvider));
        }
Esempio n. 2
0
        /// <summary>
        /// Adds a configuration callback to the builder that is used to connect a consumer to the receiving endpoint.
        /// </summary>
        /// <typeparam name="TConsumer">The type of the consumer.</typeparam>
        /// <param name="builder"><see cref="IReceiveEndpointBuilder"/></param>
        /// <param name="consumerConfigurator">The configuration callback to configure the consumer.</param>
        public static void AddConsumer <TConsumer>(this IReceiveEndpointBuilder builder, Action <IConsumerConfigurator <TConsumer>, IServiceProvider> consumerConfigurator)
            where TConsumer : class, IConsumer
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            builder.Services.TryAddTransient <TConsumer>();

            builder.AddConfigurator((host, endpoint, serviceProvider) =>
            {
                var consumerFactory = serviceProvider.GetRequiredService <IConsumerFactory <TConsumer> >();
                endpoint.Consumer(consumerFactory, consumerConfigure => consumerConfigurator?.Invoke(consumerConfigure, serviceProvider));
            });
        }
        public void AddConfigurator_GivenNonGeneric_ThenValid()
        {
            var services = new ServiceCollection();
            var receiveEndpointBuilder = new ReceiveEndpointBuilder <IHost, IReceiveEndpointConfigurator>(services);

            var mockHost                        = new Mock <IHost>(MockBehavior.Strict);
            var mockServiceProvider             = new Mock <IServiceProvider>(MockBehavior.Strict);
            var mockReceiveEndpointConfigurator = new Mock <IReceiveEndpointConfigurator>(MockBehavior.Strict);

            var configuratorWasCalled = false;
            IReceiveEndpointBuilder receiveEndpointBuilderNonGeneric = receiveEndpointBuilder;

            receiveEndpointBuilderNonGeneric.AddConfigurator((host, configurator, serviceProvider) =>
            {
                configuratorWasCalled = true;
                Assert.Same(mockHost.Object, host);
                Assert.Same(mockServiceProvider.Object, serviceProvider);
                Assert.Same(mockReceiveEndpointConfigurator.Object, configurator);
            });

            receiveEndpointBuilder.Configure(mockHost.Object, mockReceiveEndpointConfigurator.Object, mockServiceProvider.Object);

            Assert.True(configuratorWasCalled);
        }