As I go around the country talking to customers about the benefits of the Microsoft platform and our dedication to interoperability, I inevitably hear questions around accessing JMS from .NET as well as accessing MQ/Series from WCF. I am posting the answers here for future reference.
Accessing JMS from .NET can be done using JNBridge's JMS Adapter, in beta at the time of this writing.
The way it works: your .NET app calls into JNBridge's Adapter. Through the .NET-to-Java bridging magic of JNBridgePro, that assembly calls the Java-based JMS client classes provided by the vendor of the JMS provider (let's say, Sonic or IBM or WebLogic). From that point on, it is just as if you were calling into the JMS resource from a Java application. At that point, there is a message on the JMS-accessible queue, and it can be picked up by whatever mechanism the JMS provider enables - pub/sub, or an EJB Message Driven Bean, etc. Communication going "the other way" - from Java to .NET - would work similarly.
Another cool find is that IBM built a custom channel for WebSphere MQ for Windows Communication Foundation.
This proof-of-concept technology enables IBM® WebSphere® MQ 6.0 to be used as a custom transport channel within the Windows® Communication Foundation framework, as available in the .NET Framework 3. This technology enables Windows Communication Foundation clients and services to be configured for communication using WebSphere MQ in the same manner that they would the built-in channels provided by Microsoft®.
Messages are carried using the SOAP over JMS (Java™ Message Service) message format described in WebSphere MQ 6.0, enabling interoperability with services and clients hosted by other compatible environments, such as CICS (Customer Information Control System) and WebSphere Application Server.