1

そこにあるようにhttps://msdn.microsoft.com/en-us/library/azure/dd135718.aspx

「クエリで結果が返されなくても、継続ヘッダーが返される可能性があります。」

だから私の質問は - 発信者の行動はどうあるべきですか?

  1. しばらくしてからもう一度やり直しますか?
  2. これを結果セットの最後と見なしますか?
  3. 続きなしで新しいクエリを作成します。最後に取得したデータに基づいてフィルターを更新するトークン?

また、「テーブル サービスに対するクエリは、一度に最大 1,000 アイテムを返すことができ、最大 5 秒間実行することができます。結果セットに 1,000 を超えるアイテムが含まれている場合、クエリが 5 時間以内に完了しなかった場合、秒、またはクエリがパーティション境界を越える場合、応答には、結果セットの次の項目でクエリを再開するために使用する継続トークンを開発者に提供するヘッダーが含まれます. 継続トークン ヘッダーは、クエリ テーブル操作に対して返される場合があります。またはエンティティのクエリ操作です。」

したがって、継続トークンを含む空の結果が常に返される場合、再試行戦略により無限ループに陥る可能性があるようです...

4

1 に答える 1

1

すぐに次のクエリを作成して使用し、継続トークンを渡す必要があります。ここで説明されているように: Query Timeout and Pagination。テーブル ストレージは、前の要求が終了した位置から検索されます。テーブル ストレージが 5 秒以内に一致するデータを見つけられなかったため、空の結果が得られましたが、まだ検索するデータが残っています。

継続トークンを取得したら、それらの値を使用してクエリを作成し、結果の次のページを返します。

.NET とアセンブリ Microsoft.WindowsAzure.Storage を使用する場合、すべての要求を構築する BeginExecuteQuerySegmented メソッドがあります。例: https://stackoverflow.com/a/13428086/1051244

于 2016-07-19T08:07:40.037 に答える