我正在遵循此示例代码(https://github.com/Azure/azure-documentdb-changefeedprocessor-dotnet#example),以注册观察者以处理cosmos db集合中的更改供稿。 我正在使用实用程序在cosmos db集合中创建新文档(例如,在for循环中创建400个文档)。 我正在使用30秒的FeedPollDelay。但是CFP lib似乎并没有兑现它。即使Feed轮询延迟间隔到期,也会反复调用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个文档就可以了。但是我希望在Feed轮询延迟(30秒)时间间隔到期后,第二批将与其余340个文档一起调用。
但是ProcessChangesAsync方法经常被触发,并且这个选项没有被兑现。
答案 0 :(得分:1)
FeedPollDelay用于变更供稿处理器读取变更供稿且未发现新更改时,不在每个批次之间。
示例流程: