关于TimeoutPersisterReceiver无法从超时存储中获取超时的NServiceBus警告

时间:2017-03-21 11:41:53

标签: nservicebus nservicebus5

我最近注意到我的NSB日志文件因为我之前从未注意到的警告而显着增长。

  

2017-03-21 12:17:50.554 WARN NServiceBus.Timeout.Hosting.Windows.TimeoutPersisterReceiver无法从超时存储中获取超时   System.NullReferenceException:Laréférenced'objetn'estpasdéfinieàuneinstance 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 screenshot

我使用的是NServiceBus 5.2.21。

有没有人可以帮我摆脱这个警告?

2 个答案:

答案 0 :(得分:0)

我使用较旧版本的NServiceBus(5.2.14)解决了我的问题。在此版本之上,问题出现了,此版本的所有内容都可以正常工作。

根据我的测试,当禁用NServiceBus日志记录功能时,似乎不会出现崩溃。因为我没有在NServiceBus中使用Timeouts,所以当禁用日志时一切正常。它看起来像是线程之间的连接访问问题。

也许从未见过这个bug,因为这是一个旧版本,而NServiceBus当前版本是6.x(7.x即将发布),它从未被修复过。

答案 1 :(得分:0)

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