lawrencec / rabbitmq-streams forked from squaremo/rabbitmq-streams
- Source
- Commits
- Network (3)
- Downloads (0)
- Wiki (1)
- Graphs
-
Branch:
master
| name | age | message | |
|---|---|---|---|
| |
.hgignore | Tue Aug 25 07:51:10 -0700 2009 | |
| |
Makefile | Mon Sep 14 14:33:45 -0700 2009 | |
| |
Makefile.install | Tue Aug 25 11:54:32 -0700 2009 | |
| |
Makefile.test | Fri Sep 25 04:40:39 -0700 2009 | |
| |
README.PACKAGING | Fri Aug 28 06:30:26 -0700 2009 | |
| |
README.md | Fri Jul 17 03:23:21 -0700 2009 | |
| |
bin/ | Tue Sep 15 04:00:29 -0700 2009 | |
| |
doc/ | Mon Sep 14 02:10:20 -0700 2009 | |
| |
etc/ | Mon Sep 07 10:11:24 -0700 2009 | |
| |
examples/ | Fri Jul 31 08:28:47 -0700 2009 | |
| |
harness/ | ||
| |
orchestrator/ | Fri Sep 25 04:43:36 -0700 2009 | |
| |
packaging/ | ||
| |
plugins/ | Tue Sep 15 06:07:31 -0700 2009 | |
| |
sbin/ | Tue Aug 25 08:10:21 -0700 2009 | |
| |
share/ | Thu Jul 23 06:02:07 -0700 2009 | |
| |
sites/ | Tue Sep 08 07:31:35 -0700 2009 | |
| |
start-feedshub-rabbit.sh | Sat May 09 06:54:00 -0700 2009 | |
| |
test/ | Fri Sep 25 04:42:50 -0700 2009 |
What is this?
"RabbitMQ Streams" is our name for the open source project developed with the BBC to power the "BBC Feeds Hub". It is a data streams management system.
For background information, see
You can think of RabbitMQ Streams as a distributed, robust, scalable, secure, user-friendly and manageable version of Unix pipes.
The basic logical building blocks are Sources and Destinations of data and Pipelines. The latter are composed of PipelineComponents which can route (e.g. based on regexp matches on Atom feed entries), merge and transform the data in arbitrary ways.
Data arrive at sources, and leave from destinations, via Gateways, which talk various protocols to the outside world.
Gateways as well as pipeline components (jointly referred to as Plugins) can currently be written in Java and Python, and require little boilerplate (see e.g. regexp_replace.py Support for other languages can be added straightforwardly by creating a Harness; plugins are essentially just programs following a simple protocol, with the harness taking care of much of the detail.
The message wiring and plugin processes are managed by an Erlang/OTP application called the Orchestrator. This is in a sense the core of Streams.
Current state
We're still actively developing this towards a production release; there are rough edges and of course, plenty of things we'd like to improve.
Getting started
The Makefile has a number of targets useful for development.
make setup installs build dependencies and sets up a development
environment. This is geared towards apt-get, but it's fairly easy
to do the equivalent for e.g., macports.
We also need RabbitMQ and CouchDB; make setup builds these from
source in build/opt; make install-dev-debs will just install build
dependencies without building RabbitMQ and CouchDB.
make all builds the things . This currently relies on a Maven
repository for the Java harness and plugins, which we'll make
available.
make create-fresh-accounts will install a minimal configuration, and
create a user in RabbitMQ for Streams to use.
Descriptions of the model items (sources, gateways, etc.) are kept in
CouchDB. sbin/import_config.py DIR can be used to import whole
configurations at once; e.g., sbin/import_config.py
examples/showandtell_demo.
make run will start RabbitMQ and CouchDB from the local builds,
start the development code, and tail the logs for you.
make listen-orchestrator start-orchestrator-nox starts just the
Streams orchestrator and tail its log in an xterm.
There is a more detailed "Getting started" guide in doc/getting_started_dev.org.

