using System; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using Pole.Core; using Pole.Core.EventBus; using Pole.EventBus.RabbitMQ; namespace Microsoft.Extensions.DependencyInjection { public static class PoleRabbitmqStartupConfigExtensions { public static void AddRabbitMQ( this StartupConfig startupOption, Action rabbitConfigAction, Func eventBusConfig = default) { startupOption.Services.Configure(config => rabbitConfigAction(config)); startupOption.Services.AddSingleton(); startupOption.Services.AddHostedService(); startupOption.Services.AddSingleton(); startupOption.Services.AddSingleton(serviceProvider => serviceProvider.GetService() as IProducerContainer); Startup.Register(async serviceProvider => { var container = serviceProvider.GetService(); if (eventBusConfig != default) await eventBusConfig(container); else await container.AutoRegister(); }); } } }