Comparison of Message Passing Frameworks

Here are the message passing packages I have been looking at. Of course they are not identical. To be clear, I'm not suggesting they are indentical or even close to identical. What I am saying is that every one of these packages or subsytems could potentially be used as the basis for a message passing type of high performace distributed application in C#.

1. Open MPI:
It does not work on Windows at this time but support is being "discussed". It seems to be an open specification for message passing protocol but not message queueing.

2. AMQP:
This is specification for an open message queue protocal. It is not exactly a mesage passing.

3. RabbitMQ:
This is an open source package which is an implementation of AMQP. It works on Windows and Linux. But RabbitMQ was having timeout problems if the app wait too long between insertions of messages to the queue, which is a very undesirable behaviour.

4. Apache ActiveMQ:
This is an open source implementation of a message queue system. It runs on Windows and Linux. C# application can use ActiveMQ by calling the REST interface or by calling the NMS (similar to JMS). There were shutdown errors which causes transactions to be undone.

5. Microsoft Message Queue Server - MSMQ:
This is the standard for message queueing on Windows. It does not work on Linux. It is not free. The .Net framework of C# has a lot of built-in support for MSMQ.

6. Apache Hadoop:
This is a software platform that lets one easily write and run applicatons that process vase amout of data. Hadoop is a distributed computing platform written in Java. It incorporates features similar to those of the Google File System and MapReduce.

References:
1. Comparison of languages performance (http://shootout.alioth.debian.org)
2. Enterprise integration patterns (http://www.eaipatterns.com/eaipatterns.html)