2016-12-20 7 views
1

DocumentDBは最近、変更フィードをリリースしました。 API経由でチェンジセットをリクエストできます。DocumentDBチェンジフィードのサポートはどのように再開/継続されますか?

ここでのパラメータは、継続トークン&最大アイテム数です。 これを正しく取得した場合、継続トークン= nullで始まり​​ます。 最大x個のアイテムをリクエストし、使用可能なアイテムがさらにある場合、継続トークンに応答が付属します。このようにして、別のチェンジセットが利用可能であることがわかります。

応答の継続トークンが空の場合、すべての結果が得られます。

ただし、次回APIを要求しても、続行トークンはありません。 この結果、データベース全体がチェンジセットになりますか?どうすればこれを防ぐことができますか? 最新のトークンを使用してAPIを呼び出す必要がありますか?これにより、もう一度処理されるいくつかの変更が発生しますか?

答えて

3

変更フィードを使用すると、結果がなくなっても継続トークンを返さないクエリおよび読み取りフィードとは異なり、常に継続トークンが返されます。

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ユーザーのために再コンパイルする必要があります(また、新しいスタブメソッドを実装する必要があるため)。 –

関連する問題