Я создаю нераспределенную ленту изменений, которую я хочу возобновить, например. опрос для новых изменений каждые X секунд. Переменная контрольной точки ниже содержит последний ответ продолжения ответа.DocumentDb, оптимизирующий возобновление подачи без разбиения на разделы
private string checkpoint;
private async Task ReadEvents()
{
FeedResponse<dynamic> feedResponse;
do
{
feedResponse = await client.ReadDocumentFeedAsync(commitsLink, new FeedOptions
{
MaxItemCount = this.subscriptionOptions.MaxItemCount,
RequestContinuation = checkpoint
});
if (feedResponse.ResponseContinuation != null)
{
checkpoint = feedResponse.ResponseContinuation;
}
// Code to process docs goes here...
} while (feedResponse.ResponseContinuation != null);
}
Обратите внимание на использование блока «if» вокруг контрольной точки. Это делается, потому что, если я оставлю это, responseContinuation получает значение null, что в основном перезапустит цикл опроса, поскольку установка продолжения запроса на нуль приведет к 1-му набору документов в фиде изменений.
Однако нижняя граница каждого цикла опроса будет воспроизводить предыдущий набор документов, а не только любые дополнительные изменения. Есть ли что-то, что я могу сделать, чтобы оптимизировать это дальше или это ограничение API-интерфейса изменения?
Спасибо, это было то, о чем я говорил. Я просто надеялся, что мы сможем это сделать с помощью операции ReadDocumentFeed, вместо того, чтобы читать диапазоны разделов (поскольку нам не нужно масштабировать чтение фида через несколько считывателей, но у нас будет секционированная коллекция). Я думаю, что меня бросило в раздел «Выполнение инкрементного ReadDocumentFeed» в статье, но после перечитания из операции .NET SDK он ссылается на операцию запроса, которую вы упоминаете. –
Также стоит добавить - есть ли причина, по которой метод CreateDocumentChangeFeedQuery не находится на интерфейсе IDocumentClient? Я использую версию 1.11.1 пакета NuGet. Я должен использовать класс DocumentClient напрямую. –
Мы оставили его вне IDocumentClient, потому что добавление новых методов может привести к ошибкам компиляции для разработчиков, которые внедрили макет над IDocumentClient. Но это был популярный запрос, поэтому мы добавим его в предстоящий выпуск. –