Skip to main content

Comparing Orisun

Orisun sits at a specific point on a tradeoff curve: a batteries-included event store where the durable log, content-scoped consistency, and live delivery ship in one server. This page is for evaluators deciding between Orisun and adjacent tools. It is not a claim that Orisun is universally better — every tool below is the right choice for some workload.

What makes Orisun different

Two properties define Orisun's position:

  1. Consistency is scoped by event content, not by a fixed stream. A command declares the event subset it depends on with JSON criteria, then saves only if that subset is still at the expected position. See Command Context Consistency.
  2. The event store and the delivery layer are one system. The durable log in PostgreSQL, YugabyteDB, or SQLite is the source of truth; embedded NATS JetStream is the live-delivery buffer; durable publisher checkpoints guarantee no committed event is skipped. See Delivery Guarantees.

Most adjacent tools optimize one of consistency, throughput, simplicity, or decoupling and trade the rest. Orisun optimizes for the closed loop — the command, its consistency check, and its committed-event delivery — running in one deployable server.

At a glance

ToolConsistency modelSource of truthDeliveryOps model
OrisunContent-scoped optimistic (CCC)PostgreSQL, YugabyteDB, or SQLiteCatch-up replay + live JetStream, ordered, no skipsOne binary
KafkaPartition order; no command consistency checkKafka log (retention-bounded)Log tailing by offsetBroker cluster (KRaft or ZooKeeper)
EventStoreDBStream / aggregate optimistic (expected revision)EventStoreDB storeSubscriptions + projectionsDedicated server
PostgreSQL LISTEN/NOTIFYNoneYour tablesBest-effort notifications (≤ 8 KB, not durable, no replay)Existing Postgres
NATS JetStreamNoneJetStream streamsDurable streams, acks, retentionNATS server cluster

Orisun vs Kafka

Kafka is a high-throughput distributed log. It excels as a decoupled event backbone across many producers and consumers, replay pipelines, and very high ingest rates. It has no notion of a command consistency check — ordering is per partition, consumers track offsets, and events are retained for a configurable window rather than forever.

Choose Kafka when you need a general-purpose streaming backbone across many services, maximum ingest throughput, and producers/consumers that are fully decoupled.

Choose Orisun when commands must read event history, make a consistency-checked decision, and commit and publish in one ordered loop — and you do not want to assemble a broker, publisher, and store yourself. Kafka and Orisun are not mutually exclusive: Orisun can front Kafka-free delivery with embedded JetStream, or sit beside an existing Kafka deployment.

Orisun vs EventStoreDB

EventStoreDB is a mature, purpose-built event store. Its consistency model is stream- and aggregate-centric: you write to a named stream with an expected revision, and the server rejects concurrent writes to that stream. Projections and subscriptions read from streams.

The core difference is the consistency boundary. EventStoreDB asks you to choose the aggregate stream up front and scope consistency to it. Orisun lets each command define its consistency context dynamically by querying event content — a transfer can depend on two accounts, or a limit check on a customer, product, and risk class, without pre-declaring a stream.

Choose EventStoreDB when your domain maps cleanly to aggregate streams and you want a mature, stream-focused tool with a broad ecosystem.

Choose Orisun when consistency spans a subset of events that does not map to one fixed stream, or when you want the store, delivery, auth, indexes, and API in one server.

Orisun vs PostgreSQL LISTEN/NOTIFY

LISTEN/NOTIFY is PostgreSQL's built-in notification channel. A session subscribes to a channel and receives notifications when NOTIFY fires. It is a wake-up signal, not an event log: a notification fired with no listener is lost, the payload is capped at 8 KB, and there is no replay or cross-restart ordering guarantee.

Choose LISTEN/NOTIFY when you only need to tell listeners that data in tables you already own has changed, and durability, ordering, and replay are not required.

Choose Orisun when you need a durable, ordered, replayable event log with consistency checks rather than a signal. Orisun itself uses LISTEN/NOTIFY internally as a publisher wake-up — but correctness comes from the persisted log and durable checkpoints, never from the signal. See Delivery Guarantees.

Orisun vs NATS JetStream

JetStream is NATS's durable streaming layer: persistent subjects, retention policies, consumer acknowledgements, and work queues. It is an excellent delivery layer — which is why Orisun embeds it for live delivery. JetStream alone is not an event store: it has no content-based consistency check, no command-context optimistic locking, and no concept of a consistency boundary.

Choose JetStream directly when you need durable messaging and streaming across services, and the consistency model lives in your application or another system.

Choose Orisun when you want JetStream-class delivery plus an event store and a consistency model in one server, instead of running them as separate systems. Orisun can also connect to an external JetStream-enabled NATS server with ORISUN_NATS_URL.

When to choose Orisun

Choose Orisun when:

  • commands read event history and commit conditionally on it,
  • consistency spans a subset of events rather than always a fixed stream,
  • you want the store, publisher, API, auth, indexes, and telemetry in one deployable server,
  • projectors must recover from downtime without depending only on broker retention.

Reach for another tool when:

  • you only need transient messaging or a general-purpose queue — Kafka, NATS, or RabbitMQ,
  • your domain maps cleanly to aggregate streams and you want a mature stream store — EventStoreDB,
  • you already own the data model in PostgreSQL and only need a change signal — LISTEN/NOTIFY,
  • you need a massively sharded, cross-organization streaming backbone at very high throughput — Kafka.

If Orisun fits, start with Getting Started and the Tutorial.