示例#1
0
        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);
        }
示例#2
0
 public EventConsumerBusManager(
     AzureServiceBusConsumerConfiguration azureServiceBusConsumerConfiguration,
     ISubscriptionClientFactory subscriptionClientFactory,
     IEventFactory eventFactory,
     IServiceProvider serviceProvider)
 {
     _azureServiceBusConsumerConfiguration = azureServiceBusConsumerConfiguration;
     _subscriptionClientFactory            = subscriptionClientFactory;
     _serviceProvider = serviceProvider;
     _eventFactory    = eventFactory;
 }