【问题标题】:NServiceBus ServiceInsight All Messages Get Routed To ServiceBus.Management.ErrorsNServiceBus ServiceInsight 所有消息都被路由到 ServiceBus.Management.Errors
【发布时间】:2013-10-14 09:50:01
【问题描述】:

我有一个配置为处理命令对象的服务。在 Handle 方法中,我在特定的业务案例中抛出异常。发生这种情况时,它将错误发送到错误队列,我认为特定管理服务正在处理错误队列。我的理解是,Particular Management 服务会监控错误队列并处理消息,也就是说,挖掘元数据并将其持久化到 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

在 C:\TeamCity\buildAgent\work\d4de8921a0aabf04\src\NServiceBus.Core\Unicast\Transport\TransportReceiver.cs:line 235 中的 NServiceBus.Unicast.Transport.TransportReceiver.TryProcess(TransportMessage 消息) 在 C:\TeamCity\buildAgent\work\d4de8921a0aabf04\src\NServiceBus.Core\Transports\Msmq\MsmqDequeueStrategy.cs:line 170 中的 NServiceBus.Transports.Msmq.MsmqDequeueStrategy.Action()

由于 ServiceInsight 特定管理服务在本质上应该是通用的,因此我认为它不需要了解消息的实际类型。意思是,我不必将我的 Message dll 扔到服务目录中(对吗?)。这意味着它只是通过简单地读取扩展标头来挖掘所有数据以持久保存到 RavenDB。

因此,基础工作已经到位。有人可以验证或无效我对 ServiceInsight 如何工作和配置的理解。其次,我的错误看起来像是 NServiceBus.Core 中的错误。我应该添加一些DLL或其他东西。是否还有另一个可能导致我忽略的问题的候选人。

【问题讨论】:

  • 您能否发布以错误 q 结尾的消息的消息架构?所有消息类型也会发生这种情况吗?当您运行错误处理示例并生成错误消息时会发生什么,是否也会失败?
  • 你可能想多了。几乎所有NullReferenceException 的情况都是一样的。请参阅“What is a NullReferenceException in .NET?”获取一些提示。
  • 你有没有想过这个问题?这也发生在我们身上。我们实际上并没有使用 ServiceInsight,但如果管理服务正在运行,它会用这些错误填满我们的 MSMQ 存储。

标签: nservicebus nullreferenceexception serviceinsight


【解决方案1】:

我们遇到了类似的问题,虽然我们的问题可能非常具体,但我会分享它以防万一。

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

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

【讨论】:

    猜你喜欢
    • 2014-06-01
    • 2023-03-26
    • 2014-08-07
    • 2013-11-11
    • 2013-06-12
    • 2022-08-19
    • 2018-02-14
    • 2012-03-07
    • 2010-10-20
    相关资源
    最近更新 更多