I've split Chicago Boss's message queue system into its own project.
Meet TinyMQ:
https://github.com/evanmiller/tinymq
The message queue is channel-based. Erlang processes can check a
channel for messages posted after a certain timestamp, or subscribe to
the channel and receive an Erlang message as soon as a new message is
posted to the channel. Channels can have an unlimited number of
subscribers (and processes can be subscribed to more than one
channel).
Channels are created and destroyed automatically, so the API is
extremely simple -- 5 functions total. Each channel is managed by a
gen_server so you get all the benefits of an OTP design. The code base
is quite small (~250 lines) so newbies who want to see a functioning
application with multiple interacting gen_servers might want to check
it out and learn from it, although the documentation is somewhat
sparse.
The main drawback of TinyMQ is that it is not distributed and does not
have any failover logic. It's best for developers who want a simple
message queue that runs on one machine. The code has been used in
Chicago Boss for some time now and has proven to be a popular feature.
Hopefully others can benefit from it now.
Best regards
Evan