文档 DbChangeFeed 中的 MaxItemCount
MaxItemCount in Document DbChangeFeed
我正在测试来自 DocumentDb 的新变更源。
我正在通过轮询 api.
将其连接到逻辑应用程序
因为每个请求我只需要 1 个项目,所以我将 MaxItemCount 设置为 1。
这非常有效......直到获得通过 36 结果。下一个请求,给了我 70 个结果(并且最大项目数设置为 1)并且跳过了 +- 150 个文档。
这是 DocumentDB 中的错误还是我做错了什么?
看代码,前36次,我只得到1个结果,从那以后我就出现了上述问题:
var changeFeedOptions = new ChangeFeedOptions
{
MaxItemCount = 1,
RequestContinuation = continuationToken,
PartitionKeyRangeId = partitionKey, // singe partioned collection
StartFromBeginning = fromBeginning
};
var feed = ((DocumentClient) _documentClient).CreateDocumentChangeFeedQuery(
collectionUri,
changeFeedOptions);
var result = await feed.ExecuteNextAsync();
var document = result.FirstOrDefault();
return new ChangeFeedResponse
{
ContinuationToken = result.ResponseContinuation, // this token will be used the next time
Document = document
};
对于 Change Feed,粒度是按事务划分的,这意味着来自同一事务的更改被视为原子块,并按原样返回(不能中断事务)。因此 Change Feed 的结果可以将 MaxItemCount(页面大小)扩展到事务边界。例如,一个脚本插入了 70 个文档——所有这些都作为单个事务出现,您轮询更改并提供 MaxItemCount = 1;你会得到 70 个项目(它将在事务边界停止)。这有意义吗?
这70个文档是脚本插入的吗?
我正在测试来自 DocumentDb 的新变更源。 我正在通过轮询 api.
将其连接到逻辑应用程序因为每个请求我只需要 1 个项目,所以我将 MaxItemCount 设置为 1。 这非常有效......直到获得通过 36 结果。下一个请求,给了我 70 个结果(并且最大项目数设置为 1)并且跳过了 +- 150 个文档。
这是 DocumentDB 中的错误还是我做错了什么?
看代码,前36次,我只得到1个结果,从那以后我就出现了上述问题:
var changeFeedOptions = new ChangeFeedOptions
{
MaxItemCount = 1,
RequestContinuation = continuationToken,
PartitionKeyRangeId = partitionKey, // singe partioned collection
StartFromBeginning = fromBeginning
};
var feed = ((DocumentClient) _documentClient).CreateDocumentChangeFeedQuery(
collectionUri,
changeFeedOptions);
var result = await feed.ExecuteNextAsync();
var document = result.FirstOrDefault();
return new ChangeFeedResponse
{
ContinuationToken = result.ResponseContinuation, // this token will be used the next time
Document = document
};
对于 Change Feed,粒度是按事务划分的,这意味着来自同一事务的更改被视为原子块,并按原样返回(不能中断事务)。因此 Change Feed 的结果可以将 MaxItemCount(页面大小)扩展到事务边界。例如,一个脚本插入了 70 个文档——所有这些都作为单个事务出现,您轮询更改并提供 MaxItemCount = 1;你会得到 70 个项目(它将在事务边界停止)。这有意义吗?
这70个文档是脚本插入的吗?