我正在使用Change Feed处理器库来读取分区集合上的Change Feed,下面是我如何配置它的代码。我可能会使用大多数默认选项。
ChangeFeedProcessorOptions feedProcessorOptions = new
{
LeaseRenewInterval = TimeSpan.FromSeconds(15),
};
var docObserverFactory = DocumentFeedObserverFactory.Create(this.destinationCollectionInfo, this.dbRepository);
this.builder
.WithHostName(hostName)
.WithFeedCollection(this.monitoredCollectionInfo)
.WithLeaseCollection(this.leaseCollectionInfo)
.WithProcessorOptions(feedProcessorOptions)
.WithObserverFactory(docObserverFactory);
只要Change Feed应用程序正在运行并且正在集合中插入/更新文档,并且Change Feed应用程序可以按预期拾取它们,此操作就可以正常运行。
当我停止Change Feed应用一段时间并在集合中插入/更新少量文档时,就会发生问题。然后,当我启动Change Feed应用程序时,它不会从上次离开的地方选择更改。停止更改Feed应用程序时插入的那些更改将丢失。但是,当我将标志StartFromBeginning设置为true时,它会从一开始就选择所有内容,包括在Change Feed应用停止一段时间后插入的更改。
我对从当前读取(从StartFromBeginning到false)的理解是,更改Feed自上次离开后便开始读取文档。但这似乎没有发生。请帮忙。
答案 0 :(得分:0)
有两种方法可以从您刚离开的地方继续。
第一个,也是更准确的一个,是存储您最后阅读的Continuation令牌。这样,您可以在再次启动时指定它,它将胜过StartTime
和StartFromBeginning
标志。
第二个是提供StartTime
属性,该属性将尝试自动查找给定时间的延续令牌。它的精度大约为5秒,因此有可能会丢失一些文档。