我试图figure out an issue I'm having with sitecore。我想知道我的问题基本上是他们reliance on Session.Abandon()
的问题:
出于性能原因,Sitecore只会将联系人数据写入xDB (这是mongo) 会议结束。
这个逻辑看起来有些缺陷(除非我误解了如何在Asp.Net中管理会话)。
Session.Abandon()
)会在此模型中刷新会话?即什么时候会触发session_end
事件?Abandon
事件?例如,当app_pool被回收时。我试图解决这个问题,因为它可以解释我遇到过的问题,其中数据在会话中很好但是会间歇性地写入mongoDb
答案 0 :(得分:2)
我认为在会话中构建数据然后将数据刷新到MongoDb的策略适合xDb。
xDb被设计为高容量,因此有意义的是聚合数据而不是不断地将数据写入数据库表。这是DMS之前工作的方式,并且不能很好地扩展。
我认为会话结束非常可靠,Sitecore为您提供了持久会话(inproc,mongo,SQL服务器)的各种选项,建议将MongoDb和SQL Server用于生产环境。您可以使用Contact Repository api直接将联系人数据写入MongoDb,但是为了实时捕获数据,您应该使用Tracker api。使用跟踪器api时,据我所知,将数据导入MongoDb的唯一方法是刷新会话。
如果您需要将数据刷新到xDb以进行测试,则Session.Abandon()将起作用。我在这里有一个模块,您可以使用它来创建联系人然后刷新会话,这样您就可以通过检查MongoDb来查看会话放弃的可靠性。
https://marketplace.sitecore.net/en/Modules/X/xDB_Contact_Creator.aspx