Tibco EMS vs. MSMQ vs. MQ

user998819 picture user998819 · Oct 17, 2011 · Viewed 17.2k times · Source

Could not find an answer on this question, so would like to initiate this:

Tibco EMS vs. MSMQ vs. MQ.

How do these 3 technologies compare? Which one is better and in which kinds of scenarios? Specifically, I think to use one of these in SOA environment (.NET + WCF), where the scenario will mature over time.

I have one additional specific interest in the performance, which is important to mention. So, if given a choice, performance is of a critical priority.

I would appreciate to have a comparison table for a clear picture.

Thanks!

EDIT:

I am concentrated on two parameters: performance and scalability. Scalability - how do these technologies compare in terms of supported concurrent users' count? which can support more users? scenario does not matter, let's choose the scenario which is supported by all them - e.g. simple queues. Performance - in exactly the same scenarios, which performs faster?

Answer

Ladislav Mrnka picture Ladislav Mrnka · Oct 17, 2011

If you want to use WCF than non of them really matters. You will get most of them only when you use their direct API.

MSMQ - MS technology installed with every Windows installation. It is only transport technology with support for queues.

Tibco EMS - Tibco technology supporting both queues and topics (publish/subscribe). It is expensive and more suitable for enterprise scenarios. You will most probably need other Tibco tools and technologies as well to implement full SOA solution (Tibco ActiveMatrix product suite). .NET and WCF will be only apps connected to this infrastructure which is more designed for Java world. It runs on non Windows platforms as well and together with Tibco Business Works it offers connectors (adapters) to many LOB applications. I like APIs for Tibco products but I really don't like UIs of their tools.

IBM MQ - IBM technology supporting queues and it also somehow emulates topics (publish/subscribe). Again it is expensive commercial solution more suitable for enterprise scenarios where mainframes are involved - that is biggest MQ advantage - it runs "everywhere". But that is end of advantages. APIs for both Java and .NET are terrible. .NET API is full of bugs and it doesn't work as expected. IBM doesn't understand .NET libraries versioning which leads to terrible problems when moving your client application to machines with different MQ clients installed, etc.

Edit:

There were several question / comments about what problems MQ has? As few examples you can check my MQ questions. Not every question is actually an issue but you will find few of them pointing directly to bugs. Those issues can already be fixed in new MQ client versions but that doesn't mean there are no other. Generally I found MQ .NET API the most frustrating library I have ever used - it even beaten hated SharePoint.

On the other hand if you just need to send and receive some message and don't plan to do anything special or use low level features you should be OK. At the end the API is used for a while and common use cases should work - if you are not happy enough to hit regression bugs.