Esempio n. 1
0
        /// <summary>
        /// Use a custom dependency injection container implementing the Microsoft.Extensions.DependencyInjection model.
        /// The container lifetime will be managed by NServiceBus.
        /// </summary>
        /// <param name="configuration">The endpoint configuration.</param>
        /// <param name="serviceProviderFactory">The <see cref="IServiceProviderFactory{TContainerBuilder}"/> of the container to be used.</param>
        public static ContainerSettings <TContainerBuilder> UseContainer <TContainerBuilder>(this EndpointConfiguration configuration,
                                                                                             IServiceProviderFactory <TContainerBuilder> serviceProviderFactory)
        {
            Guard.AgainstNull(nameof(configuration), configuration);
            Guard.AgainstNull(nameof(serviceProviderFactory), serviceProviderFactory);

            var        containerSettings = new ContainerSettings <TContainerBuilder>();
            IContainer containerAdapter  = new ContainerAdapter <TContainerBuilder>(serviceProviderFactory, containerSettings);

            configuration.UseContainer(containerAdapter);
            return(containerSettings);
        }
Esempio n. 2
0
        public async Task Start()
        {
            try
            {
                var endpointConfiguration = new NServiceBus.EndpointConfiguration(EndpointName);

                //These 2 settings happen for all endpoints
                endpointConfiguration.DefineCriticalErrorAction(OnCriticalError);
                endpointConfiguration.UseContainer <StructureMapBuilder>(x => x.ExistingContainer(container));

                foreach (var configure in configs)
                {
                    configure.Configure(endpointConfiguration);
                }

                endpoint = await Endpoint.Start(endpointConfiguration);
            }
            catch (Exception ex)
            {
                FailFast("Failed to start.", ex);
            }
        }