1

正如它所说的那样https://msdn.microsoft.com/en-us/library/azure/dd135718.aspx

“查询可能不返回任何结果,但仍会返回延续标头。”

所以我的问题是 - 那么调用者的行为应该是什么?

  1. 过一段时间再试一次?
  2. 将其视为结果集的结尾?
  3. 无需继续进行新查询。基于检索到的最后数据的令牌更新过滤器?

也有人说,“对表服务的查询一次最多可以返回1000个项目,最多可以执行5秒。如果结果集包含超过1000个项目,如果查询没有在5内完成秒,或者如果查询跨越分区边界,则响应包括为开发人员提供连续令牌的标头,以便在结果集中的下一个项目处恢复查询。可能会为查询表操作返回连续令牌标头或查询实体操作。”

因此,当始终返回带有延续令牌的空结果时,重试策略似乎会导致我们陷入无限循环......

4

1 回答 1

1

您应该立即构建并使用下一个查询并在其中传递延续令牌。如此处所述:查询超时和分页。将从上一个请求结束的位置开始搜索表存储。您得到一个空结果,因为表存储在五秒内没有找到任何匹配的数据,但仍有数据需要搜索。

检索到延续标记后,使用它们的值构造查询以返回下一页结果。

如果您使用 .NET 和 Microsoft.WindowsAzure.Storage 程序集,则有一个 BeginExecuteQuerySegmented 方法可以为您构建所有请求。示例:https ://stackoverflow.com/a/13428086/1051244

于 2016-07-19T08:07:40.037 回答