public static void UseAutoSubscribe(this IServiceProvider provider) { var loggerFactory = provider.GetService <ILoggerFactory>(); if (loggerFactory != null) { var logProvider = new MicrosoftLogProvider(provider.GetService <ILoggerFactory>().CreateLogger); LogProvider.SetCurrentLogProvider(logProvider); } var subscriber = provider.GetService <IAutoSubscriber>(); var moduleFinder = provider.GetService <IModuleFinder>(); subscriber.Subscribe(moduleFinder.GetModuleAssemblies().ToArray()); }
public static void StartAutoSubscribe(this IServiceProvider provider) { var loggerFactory = provider.GetService <ILoggerFactory>(); if (loggerFactory != null) { var logProvider = new MicrosoftLogProvider(provider.GetService <ILoggerFactory>().CreateLogger); LogProvider.SetCurrentLogProvider(logProvider); } var busClientFactory = provider.GetService <IBusClientFactory>(); var assemblies = provider.GetService <IModuleFinder>().GetModuleAssemblies(); var dispatcher = provider.GetService <IAutoSubscriberMessageDispatcher>(); if (busClientFactory == null)//如果没有注入IBusClientFactory表示没有启用多连接 { provider.GetService <IAutoSubscriber>().Subscribe(assemblies.ToArray()); } else { var classTypes = ConsumeAsyncTypeFinder.Get(assemblies.ToArray()); var logger = provider.GetService <ILoggerFactory>().CreateLogger <DefaultAutoSubscriber>(); foreach (var classType in classTypes) { var connectionAttribute = classType.GetCustomAttribute <ConnectionAttribute>(); IBusClient busClient; if (connectionAttribute == null) { busClient = provider.GetService <IBusClient>(); } else { busClient = busClientFactory.Create(connectionAttribute.Name); } var autoSubscriber = new DefaultAutoSubscriber(busClient, dispatcher, logger); autoSubscriber.Subscribe(classType); } } }