Getting Started
Architecture
Particular Service Platform
Transports
Persistence
ServiceInsight
ServicePulse
ServiceControl
Monitoring
Samples

NServiceBus.Extensions.Hosting

NuGet Package: NServiceBus.Extensions.Hosting (3.x)
Target Version: NServiceBus 9.x

Configuration

An NServiceBus endpoint can be hosted within the generic host with the UseNServiceBus extension method:

var hostBuilder = Host.CreateApplicationBuilder();

var endpointConfiguration = new EndpointConfiguration("MyEndpoint");

// configure endpoint here

hostBuilder.UseNServiceBus(endpointConfiguration);

var host = hostBuilder.Build();

await host.RunAsync();

This code will register the endpoint with the hosting infrastructure and automatically start and stop it based on the host's application lifetime.

Logging integration

NServiceBus logging is automatically configured to use the logging configured for the generic host; no NServiceBus specific logging configuration is needed.

Dependency injection integration

NServiceBus endpoints hosted as part of the generic host automatically use the provided IServiceCollection and IServiceProvider dependency injection infrastructure. Message handlers can resolve dependencies which are registered in the IServiceCollection.

UseNServiceBus automatically registers an IMessageSession with the container which can be resolved from the IServiceProvider or via dependency injection during runtime.

Configure custom containers

Custom dependency injection containers may be configured using IWebHostBuilder.UseServiceProviderFactory. NServiceBus automatically uses the host's dependency injection container. Refer to the container's documentation for further details.

Shutdown timeout

The .NET Generic Host has a configurable shutdown timeout that defaults to five seconds. During this shutdown period, NServiceBus waits for all in-flight messages to complete. To ensure the shutdown timeout is honored, all message handlers must observe the cancellation token that is available on the message handler context.

Stopping the endpoint

When using the generic host, the IEndpointInstance interface to stop the endpoint is not directly exposed. To stop the endpoint, use the IApplicationLifetime interface to gracefully stop the NServiceBus endpoint and other hosted services. See the generic host application lifetime documentation for further information.

Installers

It is not recommended to always run the NServiceBus installers by invoking .EnableInstallers() as this delays startup time and might require more permissions.

Instead of invoking host.

Example:

var isSetup = args.Contains("-s") || args.Contains("/s");

if (isSetup)
{
    // Installers are useful in development. Consider disabling in production.
    // https://docs.particular.net/nservicebus/operations/installers
    // endpointConfiguration.EnableInstallers();

    await Installer.Setup(endpointConfiguration);
    return;
}

// Continue and eventually invoke:
// await host.RunAsync();

Samples