JMS and MSMQ interoperability

I have come across this question of whether JMS and MSMQ are interoperabe a number of times and so I decided to address it. Microsoft does not have a JMS provider for MSMQ so basically you will need to use a third party product or implement your own JMS provider.

I came across an interesting article called Enterprise Messaging in a Heterogeneous Environment. The article describes how to use web services as a proxy between MSMQ and a JMS implementation. The solution effectively implements a custom enterprise message bus using which heterogenous applications (.net and java) can communicate asynchronously with each other.

Another way of accessing MSMQ from Java applications is to use JNI (Java Native Interface) as described here. JNI can be used to call the C api that MSMQ exposes, from within Java applications.

MSDN also has some pointers on implementing asynchronous interoperability.