The NServiceBus Azure Host package is deprecated as of version 9. Instead use self-hosting in Azure Cloud Services. Refer to the upgrade guide for further details.
Handling critical errors
Versions 6.2.2 and above
The Azure host is terminated on critical errors by default. When the host is terminated, the Azure Fabric controller will restart the host automatically.
Versions 6.2.1 and below
The Azure host is not terminated on critical errors by default and only shuts down the bus. This would cause the role not to process messages until the role host is restarted. To address this (probably undesired) behavior, implement a critical errors action that shuts down the host process instead.
// Configuring how NServiceBus handles critical errors
endpointConfiguration.DefineCriticalErrorAction(
onCriticalError: context =>
{
var output = $"Critical exception: '{context.Error}'";
log.Error(output, context.Exception);
if (Environment.UserInteractive)
{
// so that user can see on their screen the problem
Thread.Sleep(10000);
}
var fatalMessage = $"Critical error:\n{context.Error}\nShutting down.";
Environment.FailFast(fatalMessage, context.Exception);
return Task.CompletedTask;
});