public static IServiceCollection RegisterEventConsumer( this IServiceCollection serviceCollection, Func <IServiceProvider, ServiceBusConsumerOptions> optionsRetriever, params Assembly[] assembliesToDiscover) { serviceCollection.RegisterCommonServices(optionsRetriever); serviceCollection .AddSingleton( sp => { var options = optionsRetriever.Invoke(sp); var azureServiceBusConfiguration = new AzureServiceBusConsumerConfiguration( options.TopicName, options.PolicyName, options.SubscriptionName); return(azureServiceBusConfiguration); }); serviceCollection.AddSingleton <IEventConsumerBusManager, EventConsumerBusManager>(); serviceCollection.AddSingleton <ISubscriptionClientFactory, SubscriptionClientFactory>(); serviceCollection.AddSingleton <IEventFactory>(new EventFactory(assembliesToDiscover)); serviceCollection.Scan( x => x.FromAssemblies(assembliesToDiscover) .AddClasses(classes => classes.AssignableTo(typeof(IEventHandler <>))) .AsImplementedInterfaces() .WithTransientLifetime()); return(serviceCollection); }
public EventConsumerBusManager( AzureServiceBusConsumerConfiguration azureServiceBusConsumerConfiguration, ISubscriptionClientFactory subscriptionClientFactory, IEventFactory eventFactory, IServiceProvider serviceProvider) { _azureServiceBusConsumerConfiguration = azureServiceBusConsumerConfiguration; _subscriptionClientFactory = subscriptionClientFactory; _serviceProvider = serviceProvider; _eventFactory = eventFactory; }