Custom Endpoint Initialization

Component: NServiceBus
NuGet Package: NServiceBus (8-pre)
This page targets a pre-release version. Pre-releases are subject to change and samples are not guaranteed to be fully functional.

Classes that implement NServiceBus.INeedInitialization are created and called as one of the first steps performed during endpoint creation. Use INeedInitialization to register components that will be used later in the endpoint creation sequence.

Instances are:

  • Located by assembly scanning.
  • Created as one of the very first steps when the bus is created.
  • Created on the same thread that is creating the bus.
  • Created with Activator.CreateInstance(...) which means they:
    • Are not resolved from dependency injection (even if they are registered there).
    • Will not have any dependencies injected.
    • Must have a default constructor.

Once instantiated, Customize(...) is called on each instance. These calls are made on the same thread that is creating the endpoint. The order in which instances are instantiated and run is non-deterministic and should not be relied upon.

Exceptions thrown by instances of INeedInitialization are not handled by NServiceBus and will bubble up to the caller creating the endpoint.

Instances of INeedInitialization are created after type-scanning has occurred. Do not attempt to alter the types to be scanned from an instance of INeedInitialization.
class NeedsInitialization :
    INeedInitialization
{
    public void Customize(EndpointConfiguration endpointConfiguration)
    {
        // Perform initialization
        // This is after Type Scanning.
        // Do NOT call the following here:
        // endpointConfiguration.AssemblyScanner();
    }
}

Samples


Last modified