An open API service indexing awesome lists of open source software.

https://github.com/ivoire/reactobus

https://git.lavasoftware.org/ReactOBus/ReactOBus
https://github.com/ivoire/reactobus

message-broker zmq

Last synced: 12 months ago
JSON representation

https://git.lavasoftware.org/ReactOBus/ReactOBus

Awesome Lists containing this project

README

          

ReactOBus
=========

ReactOBus is a message broker that helps to create software bus over the network
and to react to some messages.

Features
========

ReactOBus is able to:

* collect events (as network messages) from different sources
* publish the stream of events
* store the events in a database
* launch specific commands when an event match some conditions

In a near future, ReactOBus will be able to:

* filter-out some events
* modify on-the-fly event format
* ...

Using ReactOBus
===============

Requirements
------------

ReactOBus is known to work with Python3.4 and Python3.5 under Linux.

It depends on (see **requirements.txt**):

* pyzmq
* pyYAML
* SQLAlchemy (if you wish to store events in a database)
* setproctitle

Installing
----------

ReactOBus is available on [pypi](https://pypi.python.org/pypi/ReactOBus) and
can be installed with:

pip install ReactOBus

By default, **pip** will not install SQLAlchemy. If need, install it manually
afterward or ask pip to include the right ReactOBus variant with:

pip install ReactOBus[db]

It's also possible to execute ReactOBus directly from the sources:

git clone https://git.lavasoftware.org/ReactOBus/ReactOBus
cd ReactOBus
virtualenv -p python3 venv
source venv/bin/activate
pip install -r requirements.txt
python reactobus --level DEBUG --conf share/examples/reactobus.yaml

Configuration
-------------

The configuration file is a YAML dictionary with:

* *inputs*: a list of input streams
* *outputs*: a list of output streams
* *core*: configuration of the internal sockets
* *reactor*: the reacting part of ReactOBus
* *db*: the database configuration

All keys except *core* and *inputs* are optional. If the optional keys are not
found in the configuration, the corresponding modules won't be loaded.

Message format
--------------

For the moment, ReactOBus only accepts one type of messages. The messages
should be multipart ZMQ messages with the following meaning:

* **topic**
* **uuid** (as generated by uuid.uuid1() in Python)
* **datetime** when the message was generated (isoformat)
* **username** of the sending process or user
* **data** as JSON

Testing ReactOBus
=================

In order to run ReactOBus automatic tests, you will have to install *py.test*:

pip install pytest

Then run the tests using:

py.test tests -v
[...]
tests/test_core.py::test_core PASSED
tests/test_db.py::test_run PASSED
tests/test_db.py::test_errors PASSED
[...]