Linger, a generally useful messaging server

Building software that involves coordinating multiple processes and servers, you need a reliable means of inter-process communication that is robust against process crash and network disconnects, and that allow for variation in message processing time. Hence, you need a message exchange system and possibly a messaging queue.

Messaging tools for inter-process and inter-computer communication are widely available, and include both free and commercial software, as well as paid services.

There are:

You can also use simple remote procedure calls (RPC), i.e., direct process-to-process communication such as XML-RPC. This can be combined with a reverse-proxy like nginx that can distribute RPCs using a round-robin routing scheme to multiple backend-processes.

Given the array of choices, it may require some thinking to pick the right tool for your project. In particular, as your requirements may go beyond what any single solution provides.

In my experience a simple solution is better, and for most of my projects I just want:

So, I went ahead and developed a combined message queue and pub-sub service with HTTP API called Linger. The project is available as open-source on Github.

Linger is a generally useful messaging server that will work for almost any project on the scale from tiny to large, where you need a work queue or to pass messages between processes and servers.

The software has some nifty features, such as persistence to an sqlite database, and the possibility to set a high-level mark on the number of messages allowed to linger in a message queue.

The project's README file provides a detailed description of the protocol. As Python is a particular favorite programming language of mine, there is also a separate project with a Linger client for Python. But, the HTTP based protocol is so simple, that you can easily implement similar client code in any language.

If you work on a project where there is a need for communicating between multiple processes or servers, give Linger a try, I'm confident it will serve you reliably.