.. highlight:: shell
.. _README:
====
Xbus
====
.. image:: https://drone.xcg.io/api/badges/orus-io/xbus/status.svg
:target: https://drone.xcg.io/orus-io/xbus
:alt: Build Status
.. image:: https://img.shields.io/badge/license-MIT-blue.svg
:target: https://bitbucket.org/orus-io/xbus/LICENSE
:alt: 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
Running
=======
3 binaries are created:
- :ref:`xbusd <xbusd>`: Main Xbus program.
- :ref:`xbusctl <xbusctl>`: Xbus administration program (ctl = "control");
remotely connects to :ref:`xbusd <xbusd>`.
- :ref:`xbus-client <xbus-client>`: Administration of actors (programs that
can connect to Xbus).
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.