0

我最近注意到我的 NSB 日志文件由于我以前从未注意到的警告而显着增长。

2017-03-21 12:17:50.554 WARN NServiceBus.Timeout.Hosting.Windows.TimeoutPersisterReceiver 无法从超时存储中获取超时 System.NullReferenceException: La référence d'objet n'est pas définieà une instance d'un objet。à NServiceBus.Timeout.Hosting.Windows.TimeoutPersisterReceiver.Poll(Object obj) dans C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Timeout\Hosting\Windows\TimeoutPersisterReceiver.cs:ligne 90 à System.Threading.Tasks .Task.Execute() 2017-03-21 12:17:50.560 INFO NServiceBus.CircuitBreakers.RepeatedFailuresOverTimeCircuitBreaker TimeoutStorageConnectivity 的断路器现在处于待命状态

此警告每秒钟出现一次,因此您可以想象我的日志文件的大小。

当我调整 NServiceBus 日志级别时,我注意到了这个警告,因为我的服务中有几次无法解释的崩溃。我发现此警告会使我的服务在一段时间后崩溃,从而导致 FatalExecutionEngineError 异常(请参见下面的屏幕截图)。

FatalExecutionEngineError 截图

我正在使用 NServiceBus 5.2.21。

有谁可以帮助我摆脱这个警告?

4

2 回答 2

0

我使用旧版本的 NServiceBus (5.2.14) 解决了我的问题。在此版本之上,出现问题,并且在此版本及以下版本中一切正常。

根据我的测试,禁用 NServiceBus 日志记录功能时似乎不会出现崩溃。由于我没有在 NServiceBus 中使用超时,因此在禁用日志时一切正常。看起来线程之间发生了并发访问问题。

也许这个错误从未见过,因为这是一个旧版本,并且由于 NServiceBus 当前版本是 6.x(7.x 即将到来),它从未被修复过。

于 2017-03-24T09:54:11.430 回答
0

这是由于超时合同发生了重大变化。确保您不仅使用最新版本的核心,而且还使用持久性。

于 2017-10-13T17:28:42.253 回答