2016-03-30 25 views
0

私はAzure WorkerroleでNServiceBusエンドポイントを実行しています。私は現時点ですべての診断をテーブルストレージに送信します。私はDLQでメッセージを受け取っていたので、なぜ私はテーブルストレージにログに記録された例外も出さないのです。NServiceBus例外がINFOメッセージとしてログに記録される

NSBはINFOとして例外をログに記録していることが判明しました。そのため、すべての実際の詳細なログの間に簡単に見つけられませんでした。

私の場合、Autofacが例外をスローするように、コマンドハンドラの依存関係を解決できませんでした。なぜ例外がスローされるのか、私は完全に理解しています。なぜ彼らがINFOとして記録されているのか理解できません。メッセージは私のDLQで終わり、私は理由を理解するためにINFO-traceしか持っていません。

NSBでこのように例外が処理される理由はありますか?

+0

「NSBが例外としてINFOを記録することが判明しました」というときは、ハンドラが例外をロードできないか、文字通りすべての例外が発生しないのですか?ハンドラがロードされ、例外がスローされると、エラーとして記録されます。明確にしていただけますか? –

+0

ロードに失敗したハンドラがログにINFOとして表示されることを意味します。 2016-03-31 08:32:45.910 INFO NServiceBus.Unicast.Transport.TransportReceiverメッセージの処理に失敗しました Autofac.Core.DependencyResolutionException:タイプ 'CommandHandler'で 'Autofac.Core.Activators.Reflection.DefaultConstructorFinder'で見つかったコンストラクタは、利用可能なサービスとパラメータで呼び出すことができます これはINFOの代わりにエラーとして記録されると思います。 – Laila

答えて

1

NServiceBusは、メッセージの処理中に発生しているため、エラーとしてコンテナの問題を記録していません。第1レベルの再試行と第2レベルの再試行が試行されます。 SLRが実行されると、再試行についての警告が記録されます。最終的に、メッセージは処理に失敗し、ERRORメッセージが記録されます。 NSB and Autofac sampleを使用してこれを再現することができます。

MadDeliveryCountは、すべてのロールインスタンスと各インスタンスが保持する再試行回数を収容するのに十分な大きさではないため、DeliveryCountが最大に達しますが、NServiceBusエンドポイントインスタンスではメッセージをエラーキューに送信してエラーを記録するまでに試行します。 question hereと同様に、私はMaxDeliveryCountを増やすことをお勧めします。

SLRカウンタがネイティブサポートされているオープンNServiceBus issueがあります。問題にあなたの声を加えることができます。 NServiceBus(V6)の次のバージョンは、少なくともDLQとログファイルのメッセージを関連付けることができるように、例外とともにログメッセージIDを記録します。

関連する問題