Wir verwenden RavenDB für unsere Website. Die Seite lädt alle ihre Daten in den Speicher (nicht sehr viel), um mit massiven Lasten umgehen zu können. Wir laden die Daten in einen Hintergrund-Thread, der regelmäßig mit dem DB (RavenDB + sqlserver) überprüft, ob neue Daten vorhanden sind und lädt diese Daten in den Speicher.ravendb lang laufende Sitzungen
Wir haben viele Dinge probiert, um die lästige Anforderungsgrenze von 30 Abfragen in RavenDB pro Sitzung zu umgehen. Da Raven keinen Mechanismus hat, um die Sitzung "zurückzusetzen", nachdem wir mit einer Iteration der Check/Load-Schleife fertig sind, und da es keine Möglichkeit gibt, Structuremap zu sagen, wollen wir wirklich eine neue Sitzung, obwohl wir es sind immer noch der gleiche Thread wie vorher, wir stecken irgendwie fest.
Am Ende habe ich rearchitected, so dass unsere Repositories jetzt eine RavenSessionProxy verwenden, welche Strukturkarte für uns lädt, die durch die Load/Fetch-Schleife zurückgesetzt werden kann (die eine neue Dokumentsitzung manuell initialisiert, wenn wir sie zurücksetzen).
Ist das wirklich der einzige Weg? Gibt es keinen Mechanismus in Raven, der sagt: "Hey, Mr. Session, ich bin jetzt fertig mit dir, geh und spüle dich selbst und sei frisch und bereit, wenn ich dich das nächste Mal anrufe" oder Structuremap zu sagen "Hey, SM! Ich bitte Sie um eine IDocumentSession, bringen Sie mir eine neue, ich bin müde von dieser alten "
MaxNumberOfRequests würde nur das Problem verschieben, der Punkt ist, dass ich möchte, dass die Sitzung für immer dauern, nur in regelmäßigen Abständen selbst zurücksetzen. Nicht * alle * Anwendungsfälle sind für einzelne Anfragen, die bis zu 30 Abfragen durchführen und dann absterben. mein Hintergrundladen ist * angeblich * um für immer zu leben – AndreasKnudsen