I have had a few questions recently about applications using client mode on z/OS. I have written about this topic before, on the old MQ blog, which is no longer accessible, so here is the information again!
Before we go into the details, lets get a couple of bits of terminology defined. MQ applications have two ways to connect to a queue manager: over TCP/IP or using shared memory.
Connecting via TCP/IP is known as client mode and allows the application and queue manager to run on different machines.
Connecting via shared memory is known as bindings mode and requires that both application and queue manager be on the same machine, and in fact same operating system instance. So, on z/OS they must be on the same LPAR.
In general bindings mode connections are faster, more secure, and simpler to set up than client mode connections. But they are less flexible because of the same machine requirement.
I also need to briefly touch on MQ for z/OS licensing, which will be relevant later. A z/OS queue manager can run under three different licenses. The QMGRPROD attribute defines which license is used:
-QMGRPROD(MQ) – IBM MQ for z/OS. This uses the standard z/OS MLC licensing model
-QMGPROD(VUE) – IBM MQ for z/OS VUE. This provides a one-time charge (OTC) licensing model. Other than that, it is no different to the MLC variant
- QMGPROD(ADVANCEDVUE) – IBM MQ Advanced for z/OS VUE. This combines IBM MQ for z/OS VUE with several other capabilities, such as AMS and MFT
Now that we have covered client and bindings mode options, and touched on licensing, let’s get back to what’s supported and when.
Applications running on distributed connecting to MQ for z/OS via client mode
This is supported regardless of the MQ for z/OS licensing model. Note however that MQ for z/OS doesn’t support the MQTT and AMQP protocols.
Applications running on z/OS connecting to MQ for z/OS via bindings mode
This is supported regardless of the MQ for z/OS licensing model. MQ for z/OS supports a wide range of runtime environments: CICS, Db2, IMS, WebSphere Application Server, WebSphere Liberty Server; and programming languages: Java, COBOL, HLASM, PL/I, etc.
Applications running on z/OS connecting to MQ for distributed via client mode
This is only supported if the application is using the MQ JMS API exposed via the MQ Messaging Provider running inside either WebSphere Application Server, or WebSphere Liberty Profile.
Note that this also includes the case where WebSphere Liberty Profile is running inside CICS – the CICS Liberty JVM server.
There are no specific licenses required here.
None of the other z/OS runtimes, or APIs, provide support for client mode.
Applications running on z/OS connecting to MQ for z/OS via client mode
Support here is the same as “Applications running on z/OS connecting to MQ for distributed via client mode”.
In addition, applications using the MQ classes for JMS or the MQ classes for Java that connect to a MQ for z/OS queue manager using the IBM MQ Advanced for z/OS VUE license can use client mode for as long as they are running in a batch environment, i.e. outside of IMS, or Db2. In this case the IBM MQ Advanced for z/OS VUE queue manager can be on the same LPAR as the application or a different LPAR.
Hopefully this helps answer any questions you have about this topic. If not let me know and I will do my best to answer them.
As always if you have any questions on MQ for z/OS feel free to reach out to me at firstname.lastname@example.org.