Endpoint configuration choices

Component: NServiceBus
NuGet Package: NServiceBus (8.x)

Code walk-through

This sample walks through the most common choices required when creating a first endpoint. It will also show the configuration APIs needed to implement those choices.


This sample uses a dual runnable console and Windows Service for hosting. Details on how to install an endpoint as a Windows Service can be seen in Windows Service Installation. See also Hosting options.

Configure recoverability

When a message fails processing it will be forwarded here.


Configure an audit queue

All messages received by an endpoint will be forwarded to the audit queue.


Select and configure logging

In this sample Log4net is being used to route log events to the console.

var layout = new PatternLayout
    ConversionPattern = "%d %-5p %c - %m%n"
var appender = new ConsoleAppender
    Layout = layout,
    Threshold = Level.Info

var executingAssembly = Assembly.GetExecutingAssembly();
var repository = log4net.LogManager.GetRepository(executingAssembly);
BasicConfigurator.Configure(repository, appender);


Create the root configuration instance

The following code will create the configuration instance and define the endpoint name.

In Versions 6 and above, the endpoint name is mandatory.
var endpointConfiguration = new EndpointConfiguration("Samples.FirstEndpoint");

Select and configure dependency injection

This sample uses Autofac with a customized instance passed into NServiceBus.

endpointConfiguration.UseContainer(new AutofacServiceProviderFactory(builder =>
    // configure custom services
    // builder.RegisterInstance(new MyService());

Select and configure serialization

This sample uses the XML serializer.


Select and configure a transport

This sample uses the learning transport.


Select and configure persistence

This sample uses the learning persistence.


Start the endpoint

Enable installers and start the endpoint.

endpointInstance = await Endpoint.Start(endpointConfiguration)

Shut down the endpoint

The endpoint should be stopped when the process is shut down.


Handling critical errors

Since this sample is configured to run as a windows service, the action defined when a critical error occurs is to shut down the process.

    onCriticalError: async context =>
        // Log the critical error
        log.Fatal($"CRITICAL: {context.Error}", context.Exception);

        await context.Stop()

        // Kill the process on a critical error
        var output = $"NServiceBus critical error:\n{context.Error}\nShutting down.";
        Environment.FailFast(output, context.Exception);

Related Articles

  • Assembly scanning
    To enable automatic detection of various features NServiceBus scans assemblies for well known types.
  • Hosting
    Describes the various approaches to endpoint hosting.

Last modified