Catalogue / Messaging

Event store

messagingevent-store

Append-only replicated event log that is the system of record.

Category
Messaging
Properties
6
Components
5
Rules
1
Properties · 6 defined by this kind

A node of this kind resolves each property from its own props, then the component's defaults, then the default below.

propertytypevaluesrequireddefault
journaledboolean—notrue
managedboolean—nofalse
replicationenumnone | raft | primary-replicanonone
roleenumjournal | sequencernojournal
snapshotIntervalEventsinteger—no—
storageenummmap | rocksdb | databasenodatabase
Rules for this kind · 1
stateful-engine-pinned-to-single-zone

A matching engine, coordination service or event store living in exactly one availability zone, with no failover and no replication, is lost with that zone. Everything that depends on it stops with it.

  • — all of these hold:
  • — the node sits inside exactly 1 availability-zone group
  • — any of these hold:
  • — the node's `failover` is "none"
  • — the node's `replicated` is false
  • — the node's `replication` is "none"
Components · 5
Source
# yaml-language-server: $schema=../schema/kind.schema.json
# Append-only, replicated event log that is the system of record (event sourcing, exchange journals, sequencers).
# Differs from stream: state is derived from it and it is snapshotted; role sequencer marks the single writer that orders events.
schemaVersion: "1"
type: "kind"
id: "event-store"
category: "messaging"
properties:
  replication:
    type: "enum"
    values: ["none", "raft", "primary-replica"]
    default: "none"
  journaled:
    type: "boolean"
    default: true
  snapshotIntervalEvents:
    type: "integer"
  storage:
    type: "enum"
    values: ["mmap", "rocksdb", "database"]
    default: "database"
  role:
    type: "enum"
    values: ["journal", "sequencer"]
    default: "journal"
  managed:
    type: "boolean"
    default: false

The same page as markdown, for an agent: /catalogue/kinds/event-store.md