1

コマンド オブジェクトを処理するように構成されたサービスがあります。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.Unicast.Transport.TransportReceiver.TryProcess(TransportMessage メッセージ) の c:\TeamCity\buildAgent\work\d4de8921a0aabf04\src\NServiceBus.Core\Unicast\Transport\TransportReceiver.cs:line 235 at NServiceBus.Transports.Msmq.MsmqDequeueStrategy c:\TeamCity\buildAgent\work\d4de8921a0aabf04\src\NServiceBus.Core\Transports\Msmq\MsmqDequeueStrategy.cs:line 170 の .Action()

ServiceInsight Particular Management サービスはおそらく本質的に汎用的であると想定されているため、実際のメッセージの種類について知る必要はないと思います。つまり、メッセージ dll をサービスのディレクトリに入れる必要はありません (正しいですか?)。したがって、拡張ヘッダーを読み取るだけで、すべてのデータを単純にマイニングして RavenDB に永続化することを意味します。

それで、その基礎工事が整った状態で。ServiceInsight がどのように機能し、どのように構成されているかについての私の理解を、誰かが検証または無効にしてくれませんか? 次に、私のエラーは NServiceBus.Core のエラーのようです。いくつかの DLL か何かを追加することになっていますか。私が単に見落としているこの問題を引き起こす可能性のある別の候補があります.

4

1 に答える 1

0

私たちも同様の問題を抱えていました。私たちの問題はおそらく私たちに固有のものでしたが、念のため共有します。

私たちのサービスのほとんどは、XML シリアライゼーションで NServiceBus 4.0.3 を使用していますが、NSB 3.3.1 とバイナリ シリアライゼーションを使用している古いサービスが 1 つあります。そのサービスは監査キューにログを記録しており、特定の管理サービスがそれらのメッセージを読み取ろうとすると、失敗していました。NSBが例外を再スローし、元のスタック トレースが失われたため、エラーの原因はわかりません。そこにないヘッダーを読み取ろうとしていると思われます。また、バイナリ シリアル化を使用していることが原因である可能性もあります。

私たちの解決策は、その 1 つの古いサービスの監査をオフにすることでした。

于 2014-02-12T15:00:15.743 に答える