关于在RavenDB进行新文件投票的建议

关于在RavenDB进行新文件投票的建议,ravendb,Ravendb,我想在我的Raven DB中轮询新文档。推荐的方法是什么?我可以使用IndexTimestamp还是可以依赖文档的顺序 我想我想分两步来做: 1.检查是否有新内容,如果有: 1.1. 获取最新的X文档 或者一步到位:获取最新的X文档,让它返回这些文档,或者告诉我,根据我发送的一些参数,没有什么新内容 仅供参考:我没有与文档对应的CLR对象。我不会对其进行轮询,但我会使用RavenDB附带的更改API从RavenDB获取连续的文档流 在这里查看更改API 我个人会将changesapi与某种消息总

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

我想我想分两步来做: 1.检查是否有新内容,如果有: 1.1. 获取最新的X文档

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


仅供参考:我没有与文档对应的CLR对象。

我不会对其进行轮询,但我会使用RavenDB附带的更改API从RavenDB获取连续的文档流

在这里查看更改API

我个人会将changesapi与某种消息总线(RabbitMQ)一起使用,以确保每个更改都得到处理并具有弹性

如果您仍然想要投票,只需创建一个包含日期和时间的索引,并按降序排序即可

var result = session.Query<Orders>()
                    .OrderByDescending(x => x.Created)
                    .Take(10)
                    .ToList();
索引:

from o in orders
let processed = LoadDocument("polling/processed/" + o.Id)
select new {
   WasProcessed = processed != null,
   Created = o.Created
}

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

LinusK,您可能想看看我们如何使用走私工具实现这一点。它明确地执行您想要的操作,获取自上次看到的文档以来的最新文档。代码如下:您的体系结构是否会迫使您轮询数据库?您可以采取的另一种方法是侦听数据库中的写事件并对其采取操作。
from o in orders
let processed = LoadDocument("polling/processed/" + o.Id)
select new {
   WasProcessed = processed != null,
   Created = o.Created
}