using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using RabbitMQ.Client; namespace FictionArchive.Service.Shared.Services.EventBus.Implementations; public static class RabbitMQExtensions { public static EventBusBuilder AddRabbitMQ(this IServiceCollection services, Action configure) { services.Configure(configure); services.AddSingleton(provider => { var options = provider.GetService>(); ConnectionFactory factory = new ConnectionFactory(); factory.Uri = new Uri(options.Value.ConnectionString); return factory; }); services.AddSingleton(); services.AddHostedService(); return services.AddEventBus(); } }