Xbus

License

Xbus provides high-level application messaging on top of NATS.

Requirements

Golang

This is a Go project. We build and test xbus with go 1.13.x

Postgresql

Xbus uses a postgresql database 9.5+ to serialize configuration and events.

Build

Build as a regular Go package:

make devtools
make install

Build from the source package

Make sure the ‘go’ found in the PATH is go 1.13 and its GOROOT/GOPATH are properly test.

Extract the xbus sources, and build:

tar xf xbus-3.1.*.tar*

cd xbus-3.1*

make install

# optionally run the tests:
# make test POSTGRES_DSN="dbname=xbus-tests user=xbus password=xbus sslmode=disable"
make doc dist

Running

5 binaries are created:

  • xbusd: Main Xbus program.
  • xbusctl: Xbus administration program (ctl = “control”); remotely connects to xbusd.
  • xbus-client: Default xbus client. Provides demo actors and tooling to administration a client account.
  • xbus-http: The Xbus HTTP gateway.
  • xbus-fullenv: A dev/test utility that build complete xbus path from a single yaml file.

Each program may be run with --help to see available commands / flags / etc.

Warning: xbusd <xbusd> can produce a LOT of logs when placed under load.

The server will crash if it is unable to write to stdio/stderr. Init systems that implement rate limitation for logs (such as systemd) may cause xbusd <xbus> to crash if the server exceeds this limit.

Updating

  • The migration directory contains scripts one can use to migrate Xbus databases from one version to the other.
  • The migration directory contains scripts one can use to migrate Xbus databases from one version to the other.
  • Run xbusd migrate to migrate Xbus databases from one version to the other.