mirror of
https://git.mills.io/prologic/msgbus.git
synced 2024-06-24 07:48:57 +00:00
1.9 KiB
1.9 KiB
msgbus
A distirbuted, scalable Message Bus server and library written in Go
WIP: THis is still highly experimental and not fit for production use.
Update: (2017-08-07) This is now being used by autodock and is undergoing heavy development to deliver what is laid out here.
Install
$ go install github.com/prologic/msgbus/...
Usage
Run the message bus daemon/server:
$ msgbusd
2017/08/07 01:11:16 [msgbus] Subscribe id=[::1]:55341 topic=foo
2017/08/07 01:11:22 [msgbus] PUT id=0 topic=foo payload=hi
2017/08/07 01:11:22 [msgbus] NotifyAll id=0 topic=foo payload=hi
2017/08/07 01:11:26 [msgbus] PUT id=1 topic=foo payload=bye
2017/08/07 01:11:26 [msgbus] NotifyAll id=1 topic=foo payload=bye
2017/08/07 01:11:33 [msgbus] GET topic=foo
2017/08/07 01:11:33 [msgbus] GET topic=foo
2017/08/07 01:11:33 [msgbus] GET topic=foo
Subscribe to a topic using the message bus client:
$ msgbus sub foo
2017/08/07 01:11:22 [msgbus] received message: id=0 topic=foo payload=hi
2017/08/07 01:11:26 [msgbus] received message: id=1 topic=foo payload=bye
Send a few messages with the message bus client:
$ msgbus pub foo hi
$ msgbus pub foo bye
You can also manually pull messages using the client:
$ msgbus pull foo
2017/08/07 01:11:33 [msgbus] received message: id=0 topic=foo payload=hi
2017/08/07 01:11:33 [msgbus] received message: id=1 topic=foo payload=bye
This is slightly different from a listening subscriber (using websockets) where messages are pulled directly.
Design
Design decisions so far:
- In memory queues (may extend this with interfaces and persistence)
- HTTP API
- Websockets for realtime push of events
- Sequence ID Message tracking
- Pull and Push model
License
msgbus is licensed under the MIT License