我最近注意到我的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异常(见下面的截图)。
我使用的是NServiceBus 5.2.21。
有没有人可以帮我摆脱这个警告?
答案 0 :(得分:0)
我使用较旧版本的NServiceBus(5.2.14)解决了我的问题。在此版本之上,问题出现了,此版本的所有内容都可以正常工作。
根据我的测试,当禁用NServiceBus日志记录功能时,似乎不会出现崩溃。因为我没有在NServiceBus中使用Timeouts,所以当禁用日志时一切正常。它看起来像是线程之间的连接访问问题。
也许从未见过这个bug,因为这是一个旧版本,而NServiceBus当前版本是6.x(7.x即将发布),它从未被修复过。
答案 1 :(得分:0)
这是由于超时合同发生了重大变化。确保您不仅使用最新版本的Core,还要使用持久性。