public
Description: Data streams management using RabbitMQ.
Homepage:
Clone URL: git://github.com/squaremo/rabbitmq-streams.git
Michael Bridgen (author)
Mon Sep 28 05:52:03 -0700 2009
commit  d32cfa66f1960410e8d610908e35415c1c40cbf1
tree    0429d75da1a18844b04781a512d58b32546925b3
parent  d5e3eff471430021fe1613ac2cdc9e6e829d8fcb
name age message
file .hgignore Tue Aug 25 07:51:10 -0700 2009 Merge bug21474; its still not 100% finished but... [Alexander Schmolck]
file Makefile Mon Sep 14 14:33:45 -0700 2009 Added python-mako as dependency to Makfile for ... [Alexander Schmolck]
file Makefile.install Tue Aug 25 11:54:32 -0700 2009 Horrible hack to make rpm work, maybe. [Alexander Schmolck]
file Makefile.test Fri Sep 25 04:40:39 -0700 2009 Chart the trace data, fix up other charts [Michael Bridgen]
file README.PACKAGING Fri Aug 28 06:30:26 -0700 2009 Removed obsolete and non-fedora specifc stuff f... [Alexander Schmolck]
file README.md Fri Jul 17 03:23:21 -0700 2009 What is it? [Michael Bridgen]
directory bin/ Tue Sep 15 04:00:29 -0700 2009 Made create_help --help better (working even!) [Alexander Schmolck]
directory doc/ Mon Sep 14 02:10:20 -0700 2009 Brought getting_started_dev.org somewhat up-to-... [Alexander Schmolck]
directory etc/ Mon Sep 07 10:11:24 -0700 2009 Started work on an init.d script, based on the ... [Alexander Schmolck]
directory examples/ Fri Jul 31 08:28:47 -0700 2009 Partially tested email configuration [timclark]
directory harness/ Mon Sep 28 04:43:12 -0700 2009 Merge backout changeset [Michael Bridgen]
directory orchestrator/ Fri Sep 25 04:43:36 -0700 2009 Switch debug and trace on for when running the ... [Michael Bridgen]
directory packaging/ Mon Sep 28 05:52:03 -0700 2009 Supply the username when creating the streams user [Michael Bridgen]
directory plugins/ Tue Sep 15 06:07:31 -0700 2009 Removing window plugin for the time being (in i... [Alexander Schmolck]
directory sbin/ Tue Aug 25 08:10:21 -0700 2009 Merged from bug21474 try 2 --HG-- rename : orc... [timclark]
directory share/ Thu Jul 23 06:02:07 -0700 2009 Transform script for use in xslt integration te... [timclark]
directory sites/ Tue Sep 08 07:31:35 -0700 2009 Cleanup - remove IDE generated headers. [timclark]
file start-feedshub-rabbit.sh Sat May 09 06:54:00 -0700 2009 Use proper {} instead of () for sh var expansion [Tony Garnock-Jones]
directory test/ Fri Sep 25 04:42:50 -0700 2009 Make sure we have XML messages for use with wit... [Michael Bridgen]
README.md

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.