/// <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; }
/// <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"); }