単純なコンソールアプリケーション(デバッグモードではない)からAzure Service Busキューに1000の単純なメッセージを送信しようとすると、httpモードでは90秒かかります。
標準のnettcpモードでは、70秒かかります。
他のみんなのスピードもありますか?もっと速くなると思っていたのですが、これは正しいのでしょうか?
単純なコンソールアプリケーション(デバッグモードではない)からAzure Service Busキューに1000の単純なメッセージを送信しようとすると、httpモードでは90秒かかります。
標準のnettcpモードでは、70秒かかります。
他のみんなのスピードもありますか?もっと速くなると思っていたのですが、これは正しいのでしょうか?
これらすべてを同じスレッドで実行していますか?複数のスレッド/タスクを使用してみてください。メッセージを並行して送信してください。また、より高いスループットが必要な場合は、app.configにいくつかの変更を加えることができます。
<system.net>
<settings>
<servicePointManager expect100Continue="false" useNagleAlgorithm="false"/>
</settings>
<connectionManagement>
<add address = "*" maxconnection = "48" />
</connectionManagement>
</system.net>
最後に、Windows Azure VM(できれば同じデータセンター)内からコンソールアプリを実行してみてください。これにより、WAN接続の影響が排除されます。
また、バッチ送信方法の活用も検討してください。Azure SDKには、Service Busクライアントキューに、メッセージのバッチを一度に送信できるメソッドがあります。大規模な通話を犠牲にして、ネットワークの総オーバーヘッドを削減します。バッチサイズを調整して、自分に合った最大値にし、バッチがいっぱいになるか、特定のタイムアウトに達するまでメッセージをキューに入れることができます。これにより、バッチ処理を行うことができますが、それでも妥当な時間で応答します。