Nservicebus NSServiceBus ServiceInsight将所有消息路由到ServiceBus.Management.Errors

Nservicebus NSServiceBus ServiceInsight将所有消息路由到ServiceBus.Management.Errors,nservicebus,nullreferenceexception,serviceinsight,Nservicebus,Nullreferenceexception,Serviceinsight,我有一个配置为处理命令对象的服务。在Handle方法中,我在特定的业务案例中抛出一个异常。发生这种情况时,它会将错误发送到错误队列,我认为特定的管理服务正在处理错误队列。我的理解是,特定的管理服务将监视错误队列并处理消息,也就是说,挖掘元数据并将其持久化到RavenDB。最后,它应该将消息转发到Error.Log队列。遗憾的是,每条消息似乎都被路由到Service.Management.Errors队列。可能是因为特定的管理服务处理程序失败了 如果查看Service.Management.Err

我有一个配置为处理命令对象的服务。在Handle方法中,我在特定的业务案例中抛出一个异常。发生这种情况时,它会将错误发送到错误队列,我认为特定的管理服务正在处理错误队列。我的理解是,特定的管理服务将监视错误队列并处理消息,也就是说,挖掘元数据并将其持久化到RavenDB。最后,它应该将消息转发到Error.Log队列。遗憾的是,每条消息似乎都被路由到Service.Management.Errors队列。可能是因为特定的管理服务处理程序失败了

如果查看Service.Management.Errors队列中消息的扩展标题,我会看到以下信息:

<HeaderInfo>
<Key>NServiceBus.ExceptionInfo.ExceptionType</Key>
<Value>System.NullReferenceException</Value>
</HeaderInfo>

<HeaderInfo>
<Key>NServiceBus.ExceptionInfo.Message</Key>
<Value>Object reference not set to an instance of an object.</Value>
</HeaderInfo>

<HeaderInfo>
<Key>NServiceBus.ExceptionInfo.Source</Key>
<Value>NServiceBus.Core</Value>
</HeaderInfo>

<HeaderInfo>
<Key>NServiceBus.ExceptionInfo.StackTrace</Key>
<Value>System.NullReferenceException: Object reference not set to an instance of an object.
             at NServiceBus.Unicast.Transport.TransportReceiver.ProcessMessage              (TransportMessage       message) in c:\TeamCity\buildAgent\work\d4de8921a0aabf04\src\NServiceBus.Core\Unicast\Transport\TransportReceiver.cs:line 357

NServiceBus.ExceptionInfo.ExceptionType
System.NullReferenceException
NServiceBus.ExceptionInfo.Message
对象引用未设置为对象的实例。
NServiceBus.ExceptionInfo.Source
NServiceBus.Core
NServiceBus.ExceptionInfo.StackTrace
System.NullReferenceException:对象引用未设置为对象的实例。
在c:\TeamCity\buildAgent\work\d4de8921a0aabf04\src\NServiceBus.Core\Unicast\Transport\TransportReceiver.ProcessMessage(TransportMessage消息)中的NServiceBus.Unicast.Transport.TransportReceiver.ProcessMessage(TransportMessage消息):第357行
在c:\TeamCity\buildAgent\work\d4de8921a0aabf04\src\NServiceBus.Core\Unicast\Transport\TransportReceiver.TryProcess(TransportMessage消息)中的NServiceBus.Unicast.Transport.TransportReceiver.tryproces(TransportMessage消息):第235行 在c:\TeamCity\buildAgent\work\d4de8921a0aabf04\src\NServiceBus.Core\Transports\Msmq\msmqdequeuestregy.Action()中的NServiceBus.Transports.Msmq.msmqdequeuestregy.Action()处:第170行

由于ServiceInsight特定的管理服务在本质上应该是通用的,因此我假设它不需要知道消息的实际类型。也就是说,我不必将消息dll放入服务目录中(正确吗?)。因此,这意味着它只需通过读取扩展头来挖掘所有数据,以持久化到RavenDB


因此,有了这些基础工作。是否有人可以验证或否定我对ServiceInsight如何工作和配置的理解。其次,我的错误看起来像是NServiceBus.Core中的错误。我应该添加一些DLL还是什么。当然,有没有另一个可能导致这个问题的候选者,我只是忽略了

我们也遇到了类似的问题,尽管我们的问题可能对我们来说非常特殊,但我还是要分享一下,以防万一

我们的大多数服务都使用NServiceBus 4.0.3和XML序列化,但我们有一个较旧的服务,它使用NSB 3.3.1和二进制序列化。该服务正在登录到审核队列,当特定的管理服务尝试读取这些消息时,它将失败。由于NSB和丢失原始堆栈跟踪,我不确定错误的来源是什么。我怀疑它试图读取不存在的标题。这也可能是由于使用了二进制序列化


我们的解决方案是关闭对一个旧服务的审核。

您能发布以错误q结尾的消息的消息架构吗?。所有消息类型都会发生这种情况吗?当您运行错误处理示例并生成错误消息时,会发生什么情况?是否也会失败?您可能考虑过度了。几乎所有
NullReferenceException
的情况都是相同的。请参阅“”以获取一些提示。您是否曾经了解这一点?这也发生在我们身上。我们实际上没有使用ServiceInsight,但如果管理服务正在运行,它会用这些错误填充MSMQ存储。