Azure Queue バックエンドで NServiceBus をテストしています。すべてのデフォルト設定を使用して NServiceBus を構成し、次のコードを使用してメッセージを送信します。
while ((data = Console.ReadLine()) != null)
{
Stopwatch sw = new Stopwatch();
sw.Start();
Bus.Send("testqueue", new Message() {Data = data});
sw.Stop();
Console.WriteLine("Sent time: " + sw.ElapsedMilliseconds);
}
私の開発マシンで実行すると、メッセージをキューに送信するのに約 700 ミリ秒かかります。Azure Storage クライアントを使用して直接書き込む場合、キューは遠く離れており、最大 350 ミリ秒です。
今、私は2つの質問があります:
- Bus.Send 呼び出しでスレッドをブロックしたくありません。1 つのオプションは、async\await パターンを使用することです。別のオプションは、0MQ と同様に、メッセージを配信するためのメモリ内キューを持つことです。もちろん、最後のオプションは配信を保証するものではありませんが、いくつかの監視機能があると仮定すると、私はそれを受け入れることができます.
- メッセージの送信に、キューへの単純な書き込みの 2 倍の時間がかかるのはなぜですか? これは最適化できますか?