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
- Host: GitHub
- URL: https://github.com/ivoire/reactobus
- Owner: ivoire
- License: agpl-3.0
- Created: 2015-12-30T16:44:04.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2019-08-06T08:55:13.000Z (almost 7 years ago)
- Last Synced: 2025-06-23T00:49:13.676Z (about 1 year ago)
- Topics: message-broker, zmq
- Language: Python
- Homepage:
- Size: 182 KB
- Stars: 4
- Watchers: 1
- Forks: 2
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE
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
[...]