public static IServiceCollection AddBroadCastService( this IServiceCollection services, BroadcastServiceOptions options, Action <IBroadcastSubscriptionManager>?subcriptionConfig = null, Action <ConnectionFactory>?connectionConfig = null) { services.TryAddSingleton <IBroadcastService>(p => { var loggerFactory = p.GetService <ILoggerFactory>(); var manager = new BroadcastSubscriptionManager(options, p, loggerFactory); subcriptionConfig?.Invoke(manager); var factory = new ConnectionFactory() { HostName = options.Hostname }; connectionConfig?.Invoke(factory); return(new RabbitBroadCastService(options, factory, manager, loggerFactory)); }); return(services); }