回復可能なメッセージを使用する場合、どのくらいの RAM メモリが使用されるか説明できますか? 1 つのメッセージが約 70 ~ 80 バイトを消費することはわかっていますが、これで問題ありません。メッセージ本文がディスクに保存されることはわかっていますが、本文を RAM に複製することもできますか? Express および回復可能なメッセージ (メッセージ ストレージの制限は 1 GB) でテストしようとしましたが、どちらの場合も、プロセス エクスプローラーで、msmq サービス プロセスがワーキング セット (メモリ) に 1 GB に達していることがわかります。エクスプレスメッセージの場合は問題ないことは理解していますが、回復可能なメッセージの場合ははるかに少なくなるはずです!
2 番目の質問は、MSMQ コールバックの制限に関するものです。
コールバック付きのメッセージを受信する場合、各プロセスは最大 63 個のコールバックしか登録できないことを考慮してください。コールバックがアクティビティなしで無期限にキューで待機すると、この制限に達する可能性があります。
すべてのキューに適用されますか、それとも 1 つだけに適用されますか? たとえば、私は処理を行い、次のようなことを行います。
QueueFirst = new MessageQueue(@".\test") { Formatter = new BinaryMessageFormatter() };
QueueFirst.ReceiveCompleted += QueueOnReceiveCompleted;
QueueSecond = new MessageQueue(@".\test") { Formatter = new BinaryMessageFormatter() };
QueueSecond.ReceiveCompleted += QueueOnReceiveCompleted;
for (int i = 0; i < 63; i++)
{
QueueFirst.BeginReceive(TimeSpan.FromSeconds(10), "", Callback);
QueueSecond.BeginReceive(TimeSpan.FromSeconds(10), "", Callback);
}
それをしてもいいですか?サイクルの上限を 63 を超える値に設定しても、悪いことは何も起こらないので、質問しています。私はこのメソッドのオーバーロードを使用しています。ヘルプにコールバックに関する記述があるためです。これは、イベント ハンドラーの使用に制限がないことを意味しますか?