In a previous post, I wrote about a WCF Channel for MQ that IBM is building. Some customers had asked about this project and its implementation, specifically around the interop implications if other JMS providers, other than MQ that is, were used in an environment.
To be clear the WCF Channel for MQ is … how can I put this? for MQ. It is not an approach that particularly facilitates interop among JMS providers. That would best be addressed by a spec that focuses at a different level, say AMQP. AMQP as I understand it, is a queue-to-queue protocol that would facilitate interop between queue providers, and I believe that would be true whether or not a JMS API was used to access it. In general the goals of AMQP are valuable when they are API-agnostic. Heterogeneity anyone?
The WCF Channel fo MQ does provide interop, but to a particular limited degree: it is interop between endpoints in a messaging network that all use MQ. .NET to CICS, .NET to WebSphere, C++-running-on-AIX to .NET-on-Windows, and so on. WCF isn’t available on all the various IBM platforms, so how does the interop work? It happens because IBM is using the same message format on the queue, from all those endpoints. [added 30 July 2007 215pm Pacific] In fact as I understand it, that is the point of the WCF Channel for MQ: the programming model at the different endpoints varies, but interop among those endpoints is still possible.
There is a related spec effort in this space – the SOAP-over-JMS proposal. The message encoding IBM uses is NOT SOAP-over-JMS. Why? Because SOAP-over-JMS is an idea, not a real specification yet, let alone a standard one. Thinking a bit more about this, it doesn’t matter very much that the WCF channel for MQ does not currently use a standard encoding, as long as the encoding is consistent across the endpoints that need to exchange messages. That is to say, consistent among CTS, a Websphere EJB (MDB), a Websphere JMS app, and the WCF app, etc.
If and when finalized and adopted, the SOAP-over-JMS spec aims to allow heterogeneous web services stacks (AXIS, Sun JWSDP, Websphere’s built-in, etc) to interop. But still, this assumes that there is a single JMS provider. The SOAP-over-JMS stack provides interop among web services stacks using a single JMS provider; it does not provide interop among JMS providers. For that you would be looking at something like a point-to-point bridge or to AMQP.
What are your thoughts on this? How much interest is there in AMQP? Drop me a line.