当我们从NSB5迁移到NSB6时,我们还考虑删除NServiceBus.Host,而是使用Topshelf。当我们这样做时,我们的服务不再显示它在收到严重故障时已经停止。
作为示例,当由于任何原因我们无法访问数据库时,我希望该服务结束,并且在Services Manager中,它应指示未运行。虽然,它仍然说正在运行,但是服务实际上已停止。因此,也不会运行恢复。
这与我们使用NServiceBus.Host一样有效。
答案 0 :(得分:2)
我朝着Topshelf的方向走错了方向。答案在于如何配置NServiceBus以处理严重错误。
EndpointConfiguration.DefineCriticalErrorAction(OnCriticalError);
和
private async Task OnCriticalError(ICriticalErrorContext context)
{
await context.Stop().ConfigureAwait(false);
}
这对我有用。