文档DbChangeFeed中的MaxItemCount

时间:2016-12-22 11:38:18

标签: c# azure azure-cosmosdb

我正在测试DocumentDb中的新更改源。 我通过轮询API将它连接到Logic应用程序。

因为我每个请求只需要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
        };

1 个答案:

答案 0 :(得分:5)

对于Change Feed,粒度是按事务处理的,这意味着来自同一事务的更改被视为原子块,并且它本身返回(不能中断事务)。因此,Change Feed的结果可以将MaxItemCount(页面大小)扩展到事务边界。例如,一个脚本插入了70个文档 - 所有这些都是单个事务,您轮询更改并提供MaxItemCount = 1;你会得到70项(它将在交易边界停止)。这有意义吗?

是不是这些70个文档是通过脚本插入的?