2010-11-22 4 views
2

NServiceBusを使用してメッセージを処理するアプリケーションがあり、デバッグ中に例外がスローされ、メッセージが失われていることがわかりました。メインキューとエラーキューの両方をチェックしたところ、メッセージは一度だけ試みられました。処理中に例外が発生した場合、NServiceBusがメッセージをエラーキューに移動させない原因は何ですか?

これが起こる可能性のある一般的な落とし穴はありますか?

Windows 7 64ビットでNServiceBus 2.0.0.1219(2.0 RTM)を使用します。以前のバージョンと同じ問題の他の質問: What could prevent NServiceBus from moving messages to the error queue if there are exceptions when processing?

ウェブサイトBus.Sendコマンドハンドラエンドポイントにコマンドを送ります。

ウェブサイトの設定ファイル:

<MsmqTransportConfig InputQueue="WebAppTest_InputQueue" ErrorQueue="ErrorQueue" NumberOfWorkerThreads="1" MaxRetries="5"/> 

<UnicastBusConfig ForwardReceivedMessagesTo="AuditQueue"> 
    <MessageEndpointMappings> 
    <add Messages="ABC.ServiceBus.Commands" Endpoint="CommandProcessor_InputQueue"/> 
    </MessageEndpointMappings> 
</UnicastBusConfig> 

<DBSubscriptionStorageConfig> 
    ... 
</DBSubscriptionStorageConfig> 

コマンドハンドラコンフィグファイル:

<MsmqTransportConfig InputQueue="CommandProcessor_InputQueue" ErrorQueue="ErrorQueue" NumberOfWorkerThreads="1" MaxRetries="5" /> 

<UnicastBusConfig ForwardReceivedMessagesTo="AuditQueue"> 
    <MessageEndpointMappings> 
    <add Messages="ABC.ServiceBus.Commands" Endpoint="WebAppTest_InputQueue"/> 
    </MessageEndpointMappings> 
</UnicastBusConfig> 

<DBSubscriptionStorageConfig> 
    ... 
</DBSubscriptionStorageConfig> 
+0

管理者の設定を含めることはできますか?また、NSB用にMSMQ/DTCが正しくインストールされていることを確認してください。これはダウンロード(ツール\ MsmqUtils)のランナーツールを使用して確認できます。 –

+0

MSMQ/DTCがインストールされているので、チップをありがとうございます。関連する設定ファイルセクションを質問に追加しました。 – LucG

+0

私はそれがメッセージの転送と関係があるのだろうかと思います。 "ForwardReceivedMessagesTo"を削除してもそれが起こりますか?その間に私はレプロを試してセットアップします。 –

答えて

1

場合、メッセージの転送は、メッセージの受信と同じトランザクションの一部であるため受信が失敗すると、転送は失敗します。私は、例外がスローされた場合、正しく受信されなかったため、エラーキューには移動し、監査キューには移動しないことをお勧めします。無関係に流れているものすべてを見たい場合は、ジャーナリングが良い方法かもしれません。

関連する問題