In December 1993, the Hursley Development Laboratories released a product called Message Queue Manager for MVS/ESA, which joined a small family of existing products, all of which were part of the new IBM MQSeries family.
Today, MQSeries is known as WebSphere MQ, or more familiarly as “MQ,” and is the industry-leading provider of Message-Oriented Middleware (MOM). Used by more than 10,000 customers across numerous industries, it’s a key component in IBM’s Service- Oriented Architecture (SOA) strategy, providing the universal messaging backbone across almost 80 different platform configurations and a wide range of programming languages and interfaces. In addition, in 2004, it became the first software-only product to win the prestigious MacRobert Award from the Royal Academy of Engineering.
The WebSphere MQ story is a wonderful example of collaboration between IBM research, development, and industry specialists as well as our customers to shape a product and a technology. This article will trace its beginnings and its evolution into a world-class, cross-platform product that exploits individual platform features to benefit customers. Nowhere is this more evident than on z/OS.
As we will see at the end of this article, the latest release—WebSphere MQ Version 7.0—continues to address customer business needs by provision of a fully integrated Publish/Subscribe capability— the first time this has been offered on z/OS.
There have been many significant contributors to the success of MQ, and to mention them all would take a large part of this article! But Rob Drew, Dick Dievendorff and C. Mohan, Ph.D., were particularly instrumental in ensuring that MQ on z/OS started off with the right technical structure. In the late ’80s, IBM recognized a need, especially in the finance Industry, for what we now call MOM. At the time, IBM had no solution in this area. A Message/Queueing/Transaction Routing Task Force was assembled to examine the problem and recommend solutions. The focus was firmly on the MVS platform and the need for message queueing facilities between subsystems such as CICS, IMS, and batch.
At the same time, the Systems Application Architecture (SAA) initiative, intended to create cross-platform Common Programming Interfaces (CPIs), emerged to facilitate easier deployment of applications across IBM platforms.
The result of these two initiatives was the inclusion in the late ’80s of a specific programming interface— CPI-M—within the SAA blueprint to provide the semantics for inter-process message queueing. This defined an API for messaging that would instantly be recognized today by anyone familiar with MQ. Moreover, the important concepts of message-driven processing in a transactional context also were recognized and documented.
The next step was to build it, and it happened there were two U.S. assignees to CICS in Hursley, both of whom had particularly relevant history in this area. Rob Drew and Dick Dievendorff had worked together in the early ’80s on several advanced technology projects; one of the results was a prototype queue manager on MVS and another was a set of infrastructure facilities called Data Systems Control Facility (DSCF), which was extracted from the then single DB2 address space (ADMF) to form the basis of what’s now the System Services Address Space in DB2.
DSCF, one of IBM’s crown jewels, is a framework of services that make it easier to write a server program that can support many concurrent cross-memory accesses from many address spaces with robust isolation characteristics while providing robust recovery and logging facilities that can support single- or two-phase transactional semantics. It provided the perfect base on which to build a robust queue manager on MVS that would provide transactional message queueing capabilities via a brand-new API.
So when the requirement to build a queue manager accessible from CICS came to Hursley, we had two people in the right place at the right time who knew how to build it. In 1990, a development team was formed to build what would be the first release of MQ on MVS; its starting point was the DSCF infrastructure code from DB2.