Zum Inhalt springen
Deutsch

In-Memory-Snapshot-Store

InMemorySnapshotStore hält Snapshots in einer Map<persistenceId, Snapshot[]> im Prozess-Speicher. Wie InMemoryJournal ist es der Default, wenn kein Snapshot-Store konfiguriert ist — null Setup, ideal für Tests, niemals in Produktion verwenden.

import { ActorSystem, ActorSystemOptions, InMemoryJournal, InMemorySnapshotStore } from 'actor-ts';
// In-Memory-Stores sind der Default; hier explizit gezeigt:
const actorSystemOptions = ActorSystemOptions.create().withPersistence({
journal: new InMemoryJournal(),
snapshotStore: new InMemorySnapshotStore(),
});
const system = ActorSystem.create('demo', actorSystemOptions);

Implementiert das SnapshotStore-Interface — save, loadLatest, loadBefore, delete. Jede persistenceId mappt auf ein Array von Snapshots, geordnet nach Sequenznummer.

  • save(persistenceId, seq, state, options?) — an das Array der pid anhängen.
  • loadLatest(persistenceId, options?) — den Snapshot mit der höchsten seq zurückgeben oder None.
  • loadBefore(persistenceId, seq, options?) — den neuesten Snapshot mit sequenceNr < seq zurückgeben oder None.
  • delete(persistenceId, toSeq) — Snapshots mit seq ≤ toSeq abschneiden.

Die Implementierung ist Referenz-Semantik — jeder andere Snapshot-Store muss dieses Verhalten erfüllen (modulo Persistenz- / Verschlüsselungs- / Kompressions-Spezifika).

  • Tests — schnell, kein IO, sauberer Teardown pro Test.
  • Dev — wenn du keine echte Snapshot-Datei zwischen Runs herumliegen haben willst.
  • Referenz für benutzerdefinierte Implementierungen — lies den Source für den Vertrag.