public InProcessFunctionEndpoint( IStartableEndpointWithExternallyManagedContainer externallyManagedContainerEndpoint, ServiceBusTriggeredEndpointConfiguration configuration, IServiceProvider serviceProvider) { this.configuration = configuration; endpointFactory = _ => externallyManagedContainerEndpoint.Start(serviceProvider); }
/// <summary> /// Configures an NServiceBus endpoint that can be injected into a function trigger as a <see cref="IFunctionEndpoint"/> via dependency injection. /// </summary> public static void UseNServiceBus( this IFunctionsHostBuilder functionsHostBuilder, string endpointName, Action <ServiceBusTriggeredEndpointConfiguration> configurationFactory = null) { var config = functionsHostBuilder.GetContext().Configuration; var serviceBusConfiguration = new ServiceBusTriggeredEndpointConfiguration(endpointName, config, null); configurationFactory?.Invoke(serviceBusConfiguration); RegisterEndpointFactory(functionsHostBuilder, serviceBusConfiguration); }
internal static Func <IServiceProvider, FunctionEndpoint> Configure( ServiceBusTriggeredEndpointConfiguration configuration, IServiceCollection serviceCollection, string appDirectory) { FunctionEndpoint.LoadAssemblies(appDirectory); var startableEndpoint = EndpointWithExternallyManagedServiceProvider.Create( configuration.EndpointConfiguration, serviceCollection); return(serviceProvider => new FunctionEndpoint(startableEndpoint, configuration, serviceProvider)); }
static void RegisterEndpointFactory(IFunctionsHostBuilder functionsHostBuilder, ServiceBusTriggeredEndpointConfiguration serviceBusTriggeredEndpointConfiguration) { // When using functions, assemblies are moved to a 'bin' folder within FunctionsHostBuilderContext.ApplicationRootPath. var startableEndpoint = Configure( serviceBusTriggeredEndpointConfiguration.AdvancedConfiguration, functionsHostBuilder.Services, Path.Combine(functionsHostBuilder.GetContext().ApplicationRootPath, "bin")); functionsHostBuilder.Services.AddSingleton(serviceBusTriggeredEndpointConfiguration); functionsHostBuilder.Services.AddSingleton(startableEndpoint); functionsHostBuilder.Services.AddSingleton <IFunctionEndpoint, InProcessFunctionEndpoint>(); }