README

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

Directories

Path Synopsis
cmd
core
Package core provides the 'core' service, which must be started once and only once in every server process
Package core provides the 'core' service, which must be started once and only once in every server process
ravencapture
Package ravencapture provides the 'core' service, which must be started once and only once in every server process
Package ravencapture provides the 'core' service, which must be started once and only once in every server process
sql