正如它所说https://msdn.microsoft.com/en-us/library/azure/dd135718.aspx
“查询可能无法返回任何结果,但仍会返回继续标题。”
所以我的问题是 - 调用者的行为应该是什么?
也有人说, “对Table服务的查询一次最多可返回1,000个项目,最多可执行5秒。如果结果集包含的项目超过1,000个,如果查询未在5秒内完成,或者查询跨越分区边界,响应包括为开发人员提供继续令牌以便在结果集中的下一个项目处恢复查询的头文件。可以为查询表操作或查询实体操作返回连续令牌头。“
因此,当总是返回带有延续令牌的空结果时,重试策略可能会导致我们进入无限循环...
答案 0 :(得分:1)
您应该立即构建并使用下一个查询并在其中传递延续令牌。如上所述here: Query Timeout and Pagination。将从前一个请求结束的位置开始搜索表存储。你得到一个空的结果,因为表存储在五秒内没有找到任何匹配的数据,但仍然有数据需要搜索。
检索到延续令牌后,使用它们的值构造查询以返回下一页结果。
如果您使用.NET和程序集Microsoft.WindowsAzure.Storage,则会有一个BeginExecuteQuerySegmented方法为您构建所有请求。示例:https://stackoverflow.com/a/13428086/1051244