3

パフォーマンスの高い方法で Azure Queue Storage に書き込むための適切な呼び出し/コード パターンは何ですか?

現在、擬似コードは

StorageCredentials および CloudStorage アカウント プロパティを使用して静的クラスを作成します。アプリケーションの起動時に、設定ファイルから値を {get;} のみのプロパティに読み込みます。

アプリケーション メッセージ タイプの入力パラメーターを使用して、非同期 Task メソッドでクラスを作成します。このメソッドは型をシリアル化し、新しい CloudQueueMessage、新しい CloudQueueClient、新しい CloudQueue 参照を作成します。構成情報が必要な場合は、静的クラスから読み取られます。私のコード:

await Task.Run( ()=> theref.AddMessage(themessage).

コードに冗長性があるように見えますが、接続がキューにプールされるかどうか/どのようにプールされるか、データベース (SQL Server など) 接続の場合と同様に再試行ロジックが必要かどうかもわかりません。

どのキュー アクセス手順を何らかの方法で削減または最適化できるかを理解しようとしています。

すべてのアイデアに感謝します。

.NET 4.5.2、C# を使用。コードはクラウド サービス (ワーカー ロール) で実行されています。

ありがとう。

4

2 に答える 2

5
  • サービス/ネットワーク エラーが発生した場合、Azure ストレージ クライアント ライブラリは既定で既に再試行しています。操作ごとに最大 3 回再試行します。
  • 別のスレッドでawait theref.AddMessageAsync(themessage)同期呼び出しをブロックする代わりに、呼び出しを変更できます。AddMessage
  • 最新のライブラリでは、CloudQueueClientオブジェクトを再利用して への新しい参照を取得できますCloudQueue
  • 順番に呼び出している限り、AddMessageAsync可能な限り同じ接続が再利用されます。同時に呼び出すと、接続まで、より多くの接続が作成されServicePointManager.DefaultConnectionLimitます。そのため、キューへの同時アクセスが必要な場合は、この数を増やすことができます。
  • キュー メッセージのサイズを考慮して、 Nagle アルゴリズムを無効にするServicePointManager.UseNagleAlgorithmこともお勧めします。
于 2015-06-23T18:43:13.967 に答える
2

CloudQueue 参照をキャッシュして再利用します。メッセージをキューに追加するたびに、このクラスは HttpClient を使用して REST 呼び出しを構築します。資格情報とストレージ/キューの Uri は既にわかっているため、これにより数サイクル節約できます。

また、AddMessage の代わりに AddMessageAsync を使用することをお勧めします。

参考までに、こちらのストレージ クライアント ライブラリでの実装を確認できます。

于 2015-06-23T18:42:13.443 に答える