---
id: "event-store"
type: "component"
kind: "event-store"
provider: "default"
category: "messaging"
url: "https://localhost:3000/catalogue/components/event-store"
---

# Generic event store

Vendor-neutral event store. Use when the real product is not in the catalogue; every rule for this kind still applies.

| | |
|---|---|
| Provider | [default](https://localhost:3000/catalogue?provider=default) |
| Kind | [Event store](https://localhost:3000/catalogue/kinds/event-store) |
| Category | Messaging |
| Official docs | not recorded |
| Generic? | Vendor-neutral: the kind itself |

## Properties

| property | type | values | required | default |
|---|---|---|---|---|
| `journaled` | boolean | — | no | true |
| `managed` | boolean | — | no | false |
| `replication` | enum | `none`, `raft`, `primary-replica` | no | "none" |
| `role` | enum | `journal`, `sequencer` | no | "journal" |
| `snapshotIntervalEvents` | integer | — | no | — |
| `storage` | enum | `mmap`, `rocksdb`, `database` | no | "database" |

## Rules that apply · 1

### Stateful engine pinned to a single zone `stateful-engine-pinned-to-single-zone` (error)

- Page: https://localhost:3000/catalogue/rules/stateful-engine-pinned-to-single-zone.md
- Why: 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.
- Applies to: every node of kind matching-engine, coordination-service or event-store
- Message: '{{node.id}}' is pinned to a single availability zone with no failover or replication.

It fires when:

- 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"

## Other products of the same kind · 4

- [Axon Server](https://localhost:3000/catalogue/components/axon-server.md) `axon-server` — default
- [Apache BookKeeper](https://localhost:3000/catalogue/components/bookkeeper.md) `bookkeeper` — default
- [EventStoreDB](https://localhost:3000/catalogue/components/eventstoredb.md) `eventstoredb` — default
- [Raft event log](https://localhost:3000/catalogue/components/raft-event-log.md) `raft-event-log` — default

## Use it in a design

```yaml
nodes:
  - { id: "event-store", component: "event-store" }
```

## Source (`component` YAML, verbatim)

```yaml
# yaml-language-server: $schema=../../schema/component.schema.json
# The vendor-neutral event store: the kind itself, with no product behind it. It sets no
# defaults and adds no properties, so every required kind property stays required on the node.
schemaVersion: "1"
type: "component"
id: "event-store"
kind: "event-store"
provider: "default"
```

Human page: https://localhost:3000/catalogue/components/event-store
