【发布时间】:2012-04-03 05:51:43
【问题描述】:
我们的网站使用 RavenDB。该站点将其所有数据加载到内存中(不是很多),以便能够处理大量负载。我们在后台线程中加载数据,该线程定期检查数据库(RavenDB + sqlserver)是否存在任何新数据,如果存在,则将该数据加载到内存中。
我们已经尝试了很多方法来解决每个会话对 RavenDB 的 30 个查询的烦人请求限制。由于 Raven 没有任何机制在我们完成一次检查/加载循环的迭代后“重置”会话,并且由于无法告诉 Structuremap 我们真的想要一个新会话即使我们仍然是同一个线程,但我们有点卡住了。
最后,我重新架构了我们的存储库,现在我们的存储库使用 RavenSessionProxy,它为我们加载结构映射,可以通过加载/获取循环重置,(当我们重置它时手动实例化一个新的文档会话)。
这真的是唯一的方法吗? Raven 内部没有任何机制可以说“嘿,Session 先生,我现在已经完成了你的工作,你自己去冲洗一下,下次我打电话给你时保持新鲜并准备好)”或告诉 Structuremap “嘿,SM!下一个有时间我向你要一个 IDocumentSession,给我一个新的,我厌倦了这个旧的”
【问题讨论】:
标签: session structuremap ravendb