2016-12-20 108 views
1

DocumentDB最近發佈了更改源。 通過API,您可以請求更改集。DocumentDB如何更換支持繼續/繼續?

這裏的參數是連續標記&最大物品數量。 如果我得到這個正確的,你開始continuation token = null。 您請求最多x個項目,並且如果有更多項目可用,連續令牌附帶響應。這樣,您知道另一個變更集可用。

如果響應中的連續標記爲空,則得到所有結果。

但是,下一次請求API時,您沒有持續令牌可以繼續... 這會導致整個數據庫作爲更改集嗎?我怎樣才能防止這一點? 我是否需要使用以前使用的最新令牌調用API?這會導致一些將會再次處理的變化嗎?

回答

3

使用更改Feed時,您總是會獲得延續標記(與查詢和讀取Feed不同,當沒有更多結果時不會返回延續標記)。

IDocumentQuery<Document> query = client.CreateDocumentChangeFeedQuery(
    collectionUri, 
    new ChangeFeedOptions 
    { 
     PartitionKeyRangeId = pkRange.Id, 
     StartFromBeginning = true, 
     RequestContinuation = continuation, // From last call to change feed 
     MaxItemCount = -1 
    }); 

// Paginate through all results currently available 
while (query.HasMoreResults) 
{ 
    FeedResponse<DeviceReading> readChangesResponse = query.ExecuteNextAsync<DeviceReading>().Result; 

    foreach (DeviceReading changedDocument in readChangesResponse) 
    { 
     Console.WriteLine("\tRead document {0} from the change feed.", changedDocument.Id); 
     numChangesRead++; 
    } 

    // Save token for resuming after some time 
    checkpoints[pkRange.Id] = readChangesResponse.ResponseContinuation; 
} 

例如,請參閱https://github.com/Azure/azure-documentdb-dotnet/blob/master/samples/code-samples/ChangeFeed/Program.cs#L127

+0

感謝您的回覆!我注意到CreateDocumentChangeFeedQuery在IDocumentClient接口上不可用,但只在DocumentClient類中可用。任何想法爲什麼? – Identity

+0

這將在下一個版本中添加。我們希望在我們這樣做之前獲得反饋,因爲這需要重新編譯已經實現了IDocumentClient的DocumentDB用戶(以及如何實現新的存根方法) –