Redis-Based Message Broker for Python
Project description
Documentation: Read the docs.
Quickstart
$ pip install rivulet
Notes
Limitations
No balanced consumers (yet)
Without the proper management tools (see todos), managing messages is painful raw redis.
Todos
Extend testing
Connection drops
Parallel producers, consumers (stressing the locking setup)
Provies management functionality
list channels, delete channels
count, list, update subscribers
count, list, prune messages
Implementation details
Data model:
rvl:lock:<channel_id>: Used to maintain locks across multi-step redis calls (in particular when sending a message using a server-issued, monotonically increasing message seq id).
rvl:id:<channel_id>: A counter providing sequence ids for messages in channel channel_id
rvl:msg:<channel_id>: ZSET that maps a packed JSON string to the message sed id (allowing range queries on messages over seq ids).
rvl:channel:<channel_id>: ZSET that maps a client id to the last message id in channel channel_id seen by the clinet
rvl:index:<client_id>: ZSET that maps the channel_id to the last message id seen by client client_id
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.