关于在RavenDB中轮询新文档的建议

时间:2011-06-29 12:56:37

标签: ravendb

我想在我的Raven DB中查询新文档。这样做的推荐方法是什么?我可以使用IndexTimestamp还是可以依赖文档的顺序?

我想我想要分两步完成: 1.检查是否有新的东西,如果有的话:   1.1。获取最新的X文档。

或者一步到位:获取最新的X文档并让它返回,或者告诉我根据我发送的一些参数没有什么新内容。

仅供参考:我的文件没有相应的CLR对象。

1 个答案:

答案 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
}

为您提供一些选择,希望有所帮助:)