1

作成した MSMQ アプリケーションのスケーラビリティ テストを行っています。約 20 万件のメッセージを送信してサーバーで受信しようとすると、一部のメッセージが期限切れになっていることがわかります (TimeToBeReceived = 30 秒を使用)。メッセージで UseDeadLetterQueue を使用して、これらのメッセージを配信不能キューに移動できるようにします。すべてが期待どおりに機能しています。しかし、受信側で数千のメッセージが期限切れになっているのを見ても、デッドレター キューには 1000 のメッセージしか表示されません。

誰かがこの動作を見ました。もしそうなら、どうすればこれを解決できますか?

更新: 2 つのカウンターを保持しています。1 つはシステム (送信者) にメッセージを供給している間、もう 1 つはシステムからメッセージを消費している間です。受信側で 200,000 件のメッセージをフィードすると、約 190,000 件しか消費されません。そのため、10,000 件のメッセージが失われました (おそらく TimeToBeReceived の有効期限が切れたためです)。これらの 10,000 件のメッセージが DeadLetterQueue に表示されることを期待しています。しかし、そこには1kしかありません。それで、DeadLetterQueue が保持できる数に制限があるかどうか疑問に思っていますか?

4

2 に答える 2

4

非トランザクション DLQ には、レジストリ (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ\Parameters\MachineCache\MachineDeadletterQuota) に設定されている領域クォータがあり、既定値は 250MB です。
メッセージの大きさは?それぞれ 250 KB のメッセージが 1,000 件あると、デフォルトのクォータを超えます。

于 2012-10-09T22:11:48.510 に答える
1

TimeToBeReceived の期限が切れた場合、メッセージをデッドレター キューに移動する必要があるということですか?

于 2012-10-03T11:22:56.103 に答える