0

我们最近将 NServiceBus 项目从版本 4 升级到版本 5。我们使用 NHibernate 将数据存储到 SQL 服务器数据库。自升级以来,我们开始遇到连接超时和 TimeoutEntity 表的错误。NServiceBus 服务运行良好一段时间 - 至少几个小时,然后它们停止。

在调查其原因时,似乎是对 TimeoutEntity 表的轮询查询 - 查询每分钟完成一次,如果查询需要超过 2 秒才能完成,则会引发错误并调用 CriticalError.Raise - 这会导致NServiceBus 停止服务。

一种调查方法是找出超时的原因,但我们也想知道为什么更改此功能 - 在 NServiceBus 的先前版本中,调用 Logger.Warn 而不是 CriticalError.Raise。有人知道为什么在 NServiceBus 5 中进行了这种更改,以及我们可以做些什么来缓解它吗?

4

2 回答 2

1

您可以配置在引发严重错误之前等待的时间,请参阅http://docs.particular.net/nservicebus/errors/critical-exception-for-timeout-outages了解如何执行此操作。

于 2015-04-07T23:26:56.283 回答
0

您还可以使用定义自己的严重错误操作

config.DefineCriticalErrorAction((message, exception) => {
     <do something here>
});
于 2015-04-08T07:32:41.410 回答