Esempio n. 1
0
 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);
        }
Esempio n. 3
0
        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>();
        }