Skip to content

oexza/Orisun

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

376 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Orisun

License: MIT CI Release

Orisun is a batteries-included event store for systems that need durable event history, content-based consistency checks, and real-time delivery without running a separate broker.

Full documentation: oexza.github.io/Orisun

What It Provides

  • Transactional event storage on PostgreSQL or SQLite.
  • Command Context Consistency: save only if the queried event context has not changed.
  • Embedded NATS JetStream for catch-up and live subscriptions.
  • Durable publisher checkpoints so committed events are not skipped.
  • Sequential publishing per boundary in ascending event-log position.
  • gRPC APIs, generated clients, Docker images, embedding packages, auth, TLS, telemetry, pprof, and index management.

Quick Start

Download a release binary from GitHub Releases, or build one locally:

./build.sh linux amd64 dev sqlite

SQLite single-node with a binary:

mkdir -p ./data/orisun/sqlite ./data/orisun/nats

ORISUN_BACKEND=sqlite \
ORISUN_SQLITE_DIR=./data/orisun/sqlite \
ORISUN_NATS_STORE_DIR=./data/orisun/nats \
ORISUN_NATS_CLUSTER_ENABLED=false \
ORISUN_BOUNDARIES='[{"name":"orders"},{"name":"orisun_admin"}]' \
ORISUN_ADMIN_BOUNDARY=orisun_admin \
./build/orisun-sqlite-linux-amd64

The same server can also run from Docker:

docker run --rm \
  -p 5005:5005 \
  -p 8991:8991 \
  -e ORISUN_BACKEND=sqlite \
  -e ORISUN_SQLITE_DIR=/var/lib/orisun/sqlite \
  -e ORISUN_NATS_CLUSTER_ENABLED=false \
  -e ORISUN_BOUNDARIES='[{"name":"orders"},{"name":"orisun_admin"}]' \
  -e ORISUN_ADMIN_BOUNDARY=orisun_admin \
  -v orisun-data:/var/lib/orisun \
  orexza/orisun:sqlite

PostgreSQL with a binary:

./build.sh linux amd64 dev pg

ORISUN_BACKEND=postgres \
ORISUN_PG_HOST=localhost \
ORISUN_PG_PORT=5432 \
ORISUN_PG_USER=postgres \
ORISUN_PG_PASSWORD='password@1' \
ORISUN_PG_NAME=orisun \
ORISUN_PG_SCHEMAS=orders:public,orisun_admin:admin \
ORISUN_BOUNDARIES='[{"name":"orders"},{"name":"orisun_admin"}]' \
ORISUN_ADMIN_BOUNDARY=orisun_admin \
./build/orisun-pg-linux-amd64

See the getting started guide for binary and Docker setup for both backends.

Artifacts

Artifact Location
Documentation GitHub Pages
Setup guide SQLite and PostgreSQL setup
API guide EventStore and Admin API
Releases github.com/oexza/Orisun/releases
Docker images orexza/orisun
Go client orisun-client-go
Node.js client orisun-node-client
Java client orisun-client-java

Release binaries are attached to each GitHub release:

Asset pattern Backend
orisun-<os>-<arch> All backends
orisun-pg-<os>-<arch> PostgreSQL only
orisun-sqlite-<os>-<arch> SQLite only

Docker tags use one repository with flavor tags:

Tag Backend
orexza/orisun:latest All backends
orexza/orisun:pg PostgreSQL only
orexza/orisun:sqlite SQLite only
orexza/orisun:<version> All backends for a release
orexza/orisun:<version>-pg PostgreSQL-only release
orexza/orisun:<version>-sqlite SQLite-only release

Development

go test ./...
go build ./...
task build
task build:pg
task build:sqlite

Release:

./scripts/release.sh 1.2.3 --notes release-notes.md

License

MIT

About

The batteries included event store.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors