我想在我的Raven DB中查询新文档。这样做的推荐方法是什么?我可以使用IndexTimestamp还是可以依赖文档的顺序?
我想我想要分两步完成: 1.检查是否有新的东西,如果有的话: 1.1。获取最新的X文档。
或者一步到位:获取最新的X文档并让它返回,或者告诉我根据我发送的一些参数没有什么新内容。
仅供参考:我的文件没有相应的CLR对象。
答案 0 :(得分:1)
我不会对它进行轮询,但我会使用RavenDB中包含的Changes API来从RavenDB获取连续的文档流。
在此处查看更改API http://ravendb.net/docs/2.0/client-api/changes-api
我个人会将Changes API与某种消息总线(RabbitMQ)一起使用,以确保每个更改都得到处理和恢复。
如果您仍想轮询,只需使用日期时间创建索引并按降序排序。
var result = session.Query<Orders>()
.OrderByDescending(x => x.Created)
.Take(10)
.ToList();
如果您需要处理每个文档,您可能希望创建包含所获文档ID的标记文档,并确保它们尚未处理。
要做到这一点:
marker id : polling/processed/order/1
指数:
from o in orders
let processed = LoadDocument("polling/processed/" + o.Id)
select new {
WasProcessed = processed != null,
Created = o.Created
}
为您提供一些选择,希望有所帮助:)