Skip to content

PersistentActor

Defined in: src/persistence/PersistentActor.ts:58

Classic-style event-sourced actor. Subclasses override onCommand (which decides what to persist), onEvent (pure state update from the event), and optionally onRecoveryComplete. Commands are automatically stashed while persist(...) is pending, so user code can assume the state is caught up by the time its callback fires.

class AccountActor extends PersistentActor<Cmd, Event, State> { readonly persistenceId = ‘account-42’; initialState(): State { return { balance: 0 }; } onEvent(state: State, e: Event): State { if (e.kind === ‘deposited’) return { balance: state.balance + e.amount }; return state; } onCommand(state: State, cmd: Cmd): void { if (cmd.kind === ‘deposit’) { this.persist({ kind: ‘deposited’, amount: cmd.amount }, (s) => { this.sender?.tell({ ok: s.balance }); }); } } }

Cmd

Event

State

new PersistentActor<Cmd, Event, State>(): PersistentActor<Cmd, Event, State>

PersistentActor<Cmd, Event, State>

Actor.constructor

abstract readonly persistenceId: string

Defined in: src/persistence/PersistentActor.ts:59

compression(): CompressionConfig | undefined

Defined in: src/persistence/PersistentActor.ts:106

Per-actor compression — overrides the plugin default for THIS actor’s snapshots. Stores that don’t compress (in-memory, SQLite, Cassandra) ignore the value. Returning undefined (the default) defers to the plugin’s resolver / configured default.

CompressionConfig | undefined


encryption(): EncryptionConfig | undefined

Defined in: src/persistence/PersistentActor.ts:114

Per-actor encryption — overrides the plugin default for THIS actor’s snapshots. Honoured by stores that encrypt at rest (object-storage); other stores ignore it. Used on both the write path (encrypt) and the read path (derive subkey from master to decrypt).

EncryptionConfig | undefined


eventAdapter(): EventAdapter<Event, Event> | undefined

Defined in: src/persistence/PersistentActor.ts:90

Optional event adapter for schema evolution. When defined, every persisted event is wrapped into a { _v, _t, _e } envelope on the write path and unwrapped (with up-casting through the adapter) on the read path. Recovery is strict when an adapter is set: a raw, non-envelope event in the journal will throw MigrationError. See src/persistence/migration/.

EventAdapter<Event, Event> | undefined


abstract initialState(): State

Defined in: src/persistence/PersistentActor.ts:62

Default initial state when no snapshot and no events exist.

State


abstract onCommand(state, cmd): void | Promise<void>

Defined in: src/persistence/PersistentActor.ts:68

Handle an incoming command — typically calls persist(event, cb).

State

Cmd

void | Promise<void>


abstract onEvent(state, event): State

Defined in: src/persistence/PersistentActor.ts:65

Pure state-update function — MUST be deterministic.

State

Event

State


onReceive(message): Promise<void>

Defined in: src/persistence/PersistentActor.ts:209

Main message handler. Receives each envelope dequeued from the mailbox. A thrown error (sync or async) is caught by the supervisor.

Cmd

Promise<void>

Actor.onReceive


onRecoveryComplete(_state): void | Promise<void>

Defined in: src/persistence/PersistentActor.ts:71

Called once recovery finishes, with the final replayed state.

State

void | Promise<void>


onRecoveryFailure(reason): void

Defined in: src/persistence/PersistentActor.ts:74

Called when recovery itself throws. Default = propagate to supervision.

Error

void


postRestart(_reason): void | Promise<void>

Defined in: src/Actor.ts:55

Called on the fresh instance after a restart. Default: call preStart().

Error

void | Promise<void>

Actor.postRestart


postStop(): void | Promise<void>

Defined in: src/Actor.ts:44

Called after the actor has been terminated. Children are already stopped.

void | Promise<void>

Actor.postStop


preRestart(_reason, _message?): void | Promise<void>

Defined in: src/Actor.ts:50

Called before a restart, on the instance about to be thrown away. The default stops children and then calls postStop().

Error

Cmd

void | Promise<void>

Actor.preRestart


preStart(): Promise<void>

Defined in: src/persistence/PersistentActor.ts:138

Called after construction and before the first message is processed.

Promise<void>

Actor.preStart


snapshotAdapter(): SnapshotAdapter<State, State> | undefined

Defined in: src/persistence/PersistentActor.ts:98

Optional snapshot adapter — same semantics as eventAdapter, but applied to the state blob persisted by the snapshot store. When a snapshot adapter is set and a stored snapshot is not an envelope, recovery throws.

SnapshotAdapter<State, State> | undefined


snapshotPolicy(): SnapshotPolicy<State, Event>

Defined in: src/persistence/PersistentActor.ts:77

Snapshot policy — return true to snapshot the current state.

SnapshotPolicy<State, Event>


supervisorStrategy(): SupervisorStrategy

Defined in: src/Actor.ts:63

Supervisor strategy for this actor’s children. Defaults to restart, up to 10 times per minute, then stop.

SupervisorStrategy

Actor.supervisorStrategy


tagsFor(_event): readonly string[] | undefined

Defined in: src/persistence/PersistentActor.ts:80

Optional tags attached to every persisted event (for Persistence Query).

Event

readonly string[] | undefined