codelotus / rivermq

WebHook based messaging (not yet functional)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Build Status codecov.io

RiverMQ

WebHook based messaging system

RiverMQ will provide a WebHook based asynchronous messaging solution for distributed applications.

Clients will register subscriptions to a message "type" with a RiverMQ Server instance via a HTTP POST. This subscription will include a "callback url" which the client expects to receive messages on. When a separate client sends a message of a matching "type" to a RiverMQ server instance, that message will be sent, via a HTTP POST, to the "callback url" of all subscribed clients. Based on the response code received by RiverMQ, message redelivery attempts will be retried for up to 30 mintes. After 30 minutes RiverMQ will cease attempts to send the message to the client.

RiverMQ is inspired by subpub

Goals

  1. Provide a single executable with minimal configuration
  2. Simple horizontal scaling
  3. Automatic discovery and configuration of RiverMQ nodes via Raft
  4. Registration with Consul and/or Etcd for discovery by clients
  5. Securred communication between RiverMQ nodes with ZeroMQ
  6. Message storage and flowthrough visualization with InfluxDB
  7. Message storage and flowthrough visualization wtih MongoDB, Angular.js, and some charting library.

Development

Clone the repo and inspect the Makefile for running tests and building.

Integration tests require an instance of InfluxDB running on the localhost and bound to default ports. For convenience, a docker-compose file is included in the root of the project which will launch an InfluxDB and Consul container. Simply run the following to launch both containers.

docker-compose -f docker-compose-dev.yml up

Test coverage result file concatination is done using gover. This is a required dependency which must be installed using the following:

go get github.com/modocache/gover

Developed using Atom configured for Go development.

About

WebHook based messaging (not yet functional)


Languages

Language:Go 93.1%Language:Makefile 3.8%Language:Shell 3.1%