github.com/hextechpal/segmenter (go): Package segmenter implements partition over redis streams  Redis streams are great, fast and easy to use. But sometimes we want to ensure ordering in processing of messages This library guarantees that all the messages based on a partition key are processed in order on a single consumer It also allows does re-balancing i.e. if a consumer is added/removed(dies) then the partitions are rebalanced and the ordering property is followed  This is how the segmenter is initialized. Namespace is the logical container for segmenter. You can initialize multiple segmenter in same app with different namespaces or in diff apps with same namespaces (given underlying redis connection is same). Once initialized segmenter can be used to register streams and consumers.  Stream can be registered by any other app as well given the segmenter namespace and redis backend is same. This enable some of your apps to just act as producer while some to just act as consumers.  After registering you can use this stream to send messages  Similar to the stream you can register the consumer using the segmenter. A stream should be registered with the segmenter before you register the consumer. if not you will get ErrorNonExistentStream error  Once you have the message you can ack the message so that it will be marked processed  You can shut down the consumer using the sutDown method. This will cause the partitions to rebalance  For more details you can check out the tests/e2e package. I contains end to end test which explains these in more detail
Keywords: partitioning|redis|redis-streams