/// <summary>
        /// Initializes a new instance of the <see cref="AzureServiceBusMessageRouter"/> class.
        /// </summary>
        /// <param name="serviceProvider">The service provider instance to retrieve all the <see cref="IAzureServiceBusMessageHandler{TMessage}"/> instances.</param>
        /// <param name="options">The consumer-configurable options to change the behavior of the router.</param>
        /// <param name="logger">The logger instance to write diagnostic trace messages during the routing of the message.</param>
        /// <exception cref="ArgumentNullException">Thrown when the <paramref name="serviceProvider"/> is <c>null</c>.</exception>
        protected AzureServiceBusMessageRouter(IServiceProvider serviceProvider, AzureServiceBusMessageRouterOptions options, ILogger logger)
            : base(serviceProvider, options, logger ?? NullLogger <AzureServiceBusMessageRouter> .Instance)
        {
            Guard.NotNull(serviceProvider, nameof(serviceProvider), "Requires an service provider to retrieve the registered message handlers");

            _fallbackMessageHandler = new Lazy <IAzureServiceBusFallbackMessageHandler>(() => serviceProvider.GetService <IAzureServiceBusFallbackMessageHandler>());

            ServiceBusOptions = options;
        }
Пример #2
0
        /// <summary>
        ///     Adds an <see cref="IAzureServiceBusMessageRouter"/> implementation
        ///     to route the incoming messages through registered <see cref="IAzureServiceBusMessageHandler{TMessage}"/> instances.
        /// </summary>
        /// <param name="services">The collection of services to add the router to.</param>
        /// <param name="configureOptions">The function to configure the options that change the behavior of the router.</param>
        /// <exception cref="ArgumentNullException">Thrown when the <paramref name="services"/> is <c>null</c>.</exception>
        public static ServiceBusMessageHandlerCollection AddServiceBusMessageRouting(
            this IServiceCollection services,
            Action <AzureServiceBusMessageRouterOptions> configureOptions)
        {
            Guard.NotNull(services, nameof(services), "Requires a set of services to register the Azure Service Bus message routing");

            return(AddServiceBusMessageRouting(services, serviceProvider =>
            {
                var options = new AzureServiceBusMessageRouterOptions();
                configureOptions?.Invoke(options);
                var logger = serviceProvider.GetService <ILogger <AzureServiceBusMessageRouter> >();

                return new AzureServiceBusMessageRouter(serviceProvider, options, logger);
            }));
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="AzureServiceBusMessageRouter"/> class.
 /// </summary>
 /// <param name="serviceProvider">The service provider instance to retrieve all the <see cref="IAzureServiceBusMessageHandler{TMessage}"/> instances.</param>
 /// <param name="options">The consumer-configurable options to change the behavior of the router.</param>
 /// <exception cref="ArgumentNullException">Thrown when the <paramref name="serviceProvider"/> is <c>null</c>.</exception>
 public AzureServiceBusMessageRouter(IServiceProvider serviceProvider, AzureServiceBusMessageRouterOptions options)
     : this(serviceProvider, options, NullLogger.Instance)
 {
     Guard.NotNull(serviceProvider, nameof(serviceProvider), "Requires an service provider to retrieve the registered message handlers");
 }