Я следую этому примеру кода (https://github.com/Azure/azure-documentdb-changefeedprocessor-dotnet#example)), чтобы зарегистрировать наблюдателя для обработки изменений в коллекции БД космос.
Я создаю новые документы в коллекции cosmos db с помощью утилиты (скажем, создаю 400 документов в цикле for).
Я использую с помощью FeedPollDelay 30 секунд. Но это, кажется, не соблюдается библиотекой CFP. Метод ProcessChangesAsync вызывается повторно даже до истечения интервала задержки опроса канала.
В первом пакете извлекается около 60 документов, а во втором - около 20 документов, в третьем - около 100 документов.
DocumentCollectionInfo feedCollectionInfo = new DocumentCollectionInfo()
{
DatabaseName = databaseName,
CollectionName = monitoredCollectionName,
Uri = new Uri(uri),
MasterKey = masterKey
};
DocumentCollectionInfo leaseCollectionInfo = new DocumentCollectionInfo()
{
DatabaseName = databaseName,
CollectionName = leaseCollectionName,
Uri = new Uri(uri),
MasterKey = masterKey
};
ChangeFeedProcessorOptions feedProcessorOptions = new ChangeFeedProcessorOptions()
{
FeedPollDelay = TimeSpan.FromSeconds(30)
//LeasePrefix = Guid.NewGuid().ToString(),
//MaxItemCount = 100
};
ChangeFeedProcessorBuilder builder = new ChangeFeedProcessorBuilder();
processor = await builder
.WithHostName(hostName)
.WithFeedCollection(feedCollectionInfo)
.WithLeaseCollection(leaseCollectionInfo)
.WithProcessorOptions(feedProcessorOptions)
.WithObserver<LiveWorkItemChangeFeedObserver>()
.BuildAsync();
await processor.StartAsync();
Хорошо получить 60 документов в первой партии. Но я ожидаю, что вторая партия будет вызываться с оставшимися 340 документами в одной партии после истечения интервала задержки опроса подачи (30 секунд).
Но метод ProcessChangesAsync часто запускается, и этот параметр не учитывается.