2016-12-22 5 views
2

私はDocumentDbから新しいチェンジフィードをテストしています。 これをポーリングAPI経由でLogicアプリに接続しています。ドキュメント内のMaxItemCount DbChangeFeed

要求ごとに1つのアイテムしか必要ないので、私はMaxItemCountを1に設定しました。 これは完璧に動作します。次の要求は、私に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 
     }; 

答えて

3

を、粒度は同じからその変更を意味取引によるものであり、トランザクションはアトミック・ピースとみなされ、そのように戻されます(トランザクションを中断できません)。したがって、フィードの変更の結果、MaxItemCount(ページ・サイズ)をトランザクション境界まで拡張できます。たとえば、スクリプトには70個のドキュメントが挿入されています。これらはすべて単一のトランザクションとして扱われ、変更をポーリングしてMaxItemCount = 1を指定します。あなたが得るものは70項目です(トランザクション境界で停止します)。これは理にかなっていますか?

この70個のドキュメントがスクリプトで挿入されたケースはありますか?

+0

はい、そうでした!私はこれを知らず、DocDbチームから同じ答えを得ました。 – Identity

関連する問題