public void Invoke() { if (_invoked) { return; } using var scope = _scopeFactory.CreateScope(); var endpointsConfigurationBuilder = new EndpointsConfigurationBuilder(scope.ServiceProvider); scope.ServiceProvider.GetServices <IEndpointsConfigurator>() .ForEach(configurator => configurator.Configure(endpointsConfigurationBuilder)); _invoked = true; }
/// <summary> /// Configures the message broker endpoints and start consuming. /// </summary> /// <param name="configurator"></param> /// <param name="endpointsConfigurationAction">The inbound/outbound endpoints configuration action.</param> /// <returns></returns> public static IBroker Connect(this BusConfigurator configurator, Action <IEndpointsConfigurationBuilder> endpointsConfigurationAction) { var endpointsConfigurationBuilder = new EndpointsConfigurationBuilder( configurator.ServiceProvider.GetRequiredService <IOutboundRoutingConfiguration>(), configurator.ServiceProvider.GetRequiredService <IEnumerable <IInboundConnector> >(), configurator.ServiceProvider.GetRequiredService <ErrorPolicyBuilder>()); endpointsConfigurationAction?.Invoke(endpointsConfigurationBuilder); configurator.ServiceProvider.GetServices <IEndpointsConfigurator>().ForEach(c => c.Configure(endpointsConfigurationBuilder)); var broker = configurator.ServiceProvider.GetRequiredService <IBroker>(); broker.Connect(); return(broker); }