MQ Light Alpha 2

We just uploaded the second alpha of MQ Light to the site. All development teams experience the thrill of release days, even if they follow the release early, release often mantra as we do. Today we’re particularly excited because this release brings the first glimpse of both our Node.js client API and our developer-centric web UI. We’ll talk more about the Web UI in followup blog posts and videos.

Our goal with the API is to surface a simple and intuitive messaging model and to integrate this into a wide range of languages and application frameworks, following the natural idioms in each.

In order to reach the maximum number of frameworks and deliver a first rate messaging experience we knew that the wire format would be important. We needed an open wire protocol and we wanted one with multiple open source implementations and clients. The protocol had to be efficient and rich enough to convey typed data, message properties and to allow efficient synchronous and asynchronous send and receive. On our backlog we have stories to further simplify the usescases we’re focussed on, worker offload, batch processing and event notification so we wanted a protocol that could represent the features we needed. After much debate and prototyping we settled on using the OASIS standardized AMQP protocol version 1.0. The Node client that we released today is based on the Apache Qpid Proton project. Note that you need to use the MQ Light node.js client libraries based on AMQP 1.0 rather than any of the older AMQP 0.91 packages.

Several people have asked us why we did not use MQTT for MQ Light. The truth is that we thought long and hard about this. MQTT is an open wire protocol that is perfect for machine-to-machine (M2M) connectivity and mobile device usecases. One of the key strengths of MQTT which makes it appropriate for these usecases is that it is an extremely lightweight protocol. As such it does not implement some of the key features were required for MQ Light. We took the view that proposing to add the features we needed to MQTT might have made it less perfect for its target usecases.