wiki:msgqReplacements

This page is an attempt to summarize the findings in ticket #765 and its sub-tickets.

This is a breakdown of our true requirements:

Requirement D-Bus boost::mpi boost::multiprocess::message_queue RabbitMQ MessagePack
License Compatibility Yes - AFL Yes - Boost Software License (BSD-like) Yes - Boost Software License (BSD-like) No - Mozilla Public License Yes - Apache License
Point-to-Point Yes Yes Yes (with extra coding) - Yes
Group Communication Yes Yes No - No
Separate Instances Yes Yes Yes - Yes
Multiple OS Support Yes Yes Yes - Limited

From this, we see that only D-Bus and boost::mpi meet all of the needs. RabbitMQ has an incompatible license, and neither boost::multiprocess::message_queue nor MessagePack RPC provide group communication.

Note that in the case of boost::mpi we would also have to run a separate MPI daemon, in addition to using boost::mpi as a basis for the library in our processes. This is basically the same as D-Bus, although there are many more implementations and setup is likely to be more complex. Also, we can use MPI with other libraries than boost::mpi if we go that route. But for simplicity I'll continue to refer to the option as boost::mpi.

Here is a comparison of our "extra" features, for D-Bus and boost::mpi only:

Wishlist Item D-Bus boost::mpi
Cross-machine Partial Yes
Secure across machines Unclear Possible (SSH)
Send file descriptors Yes No
Minimize dependencies ? ?
C++ & Python clients Yes Yes
Not have to declare types before sending Okay Okay
High-performance Unknown Yes
Unit tests for code itself Some Unknown
Mock test support No No

For more information, please go ahead and review ticket #849 (D-Bus) and #853 (boost::mpi).

Note from 2013-02-05: Apache Qpid seems to meet almost everything we need... except it doesn't appear to work on FreeBSD or OS X and related OS. It does support Linux, Solaris, and Windows. Perhaps it is worth looking at fixing it.

Note from 2013-09-19: Apache Qpid seems to have fixed the FreeBSD issue:
https://issues.apache.org/jira/browse/QPID-1811
Perhaps this is the way forward after all!

Last modified 13 months ago Last modified on Sep 19, 2013, 1:54:33 PM