Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

IBM MQ Client running under Windows Docker

Tags:

docker

ibm-mq

I'm looking for a solution to run IBM MQ Client under a Windows Docker container. I know that Docker Hub only provides Linux implementations of MQ, however, I do not need full MQ Server capability. Instead, I'm hoping there's a means to install the MQ Client and simply connect to a Channel and Queues defined on another (non-Docker) system. To approach this, I've done the following:

  1. Spun up a Windows Docker container running under a command prompt (For proof of concept)

  2. Copied in and expanded MQ Client 9.0.0.8-IBM-MQC-Win64.zip

  3. Silently installed MQ Client (e.g. msiexec /i "c:\temp\Windows\MSI\IBM MQ.msi" /l*v c:\temp\install.log /q TRANSFORMS="1033.mst" AGREETOLICENSE="yes" ADDLOCAL="Client").

    Note: The installation was successful and without error

  4. Established required environment variables(MQServer, etc.) and updated paths (classpath, lib, include, etc).

  5. Pinged the MQ server system to verify connectivity.

I attempted to put a message on a working, verified queue using, amqsputc.exe MYDOCKER.DS.Q. The immediate return code is MQCONNX ended with reason code 2195. Unfortunately, 2195 is pretty generic and there are no other logs available to review.

I understand the differences between running MQ under a VM versus a container, however since I only need Client access, I was hoping MQ Client was lightweight enough to be usable.

If MQ Client is not a viable direction, is there an MQ solution which might be doable via a Cloud connection? My legacy application is Windows-based and relies on MQ for job messaging.

like image 486
LumberJack Avatar asked Feb 11 '20 18:02

LumberJack


People also ask

What is the difference between MQ client and MQ Server?

The difference between an IBM MQ server and an ordinary queue manager is that a server has a dedicated communications link with each client. For more information about creating channels for clients and servers, see Configuring distributed queuing.


2 Answers

Instead of installing the Full client install using msiexec, I would recommend that you use the IBM MQ Redistributable client install. This is packaged as a simple zip file for windows which you can extract into any location you choose.


You can find more information about the Redistributable client on the Knowledge Center page Redistributable IBM MQ clients.

You can download the IBM MQ Redistributable clients using the links below:

  • IBM MQ 9.1 Redistributable client.

  • IBM MQ 9.2 Redistributable client.

    Note: IBM MQ 8.0 is out of support as of April 30th 2020 and IBM MQ 9.0 is going out of support on September 30th 2021.


The IBM Knowledge center page Limitations and other considerations for redistributable clients gives these requirements:

Windows C runtime libraries
You might have these libraries on your machine already, but if you do not, you need to download and install the following Microsoft C/C++ runtime libraries:

  • Microsoft Visual C++ Redistributable 2008
  • Microsoft Visual C++ Redistributable 2012

The download links for the redistributable downloads for each of these libraries can be found at The latest supported Visual C++ downloads.

like image 185
JoshMc Avatar answered Oct 06 '22 21:10

JoshMc


A possible alternative (and lighter) approach: Write a Go app using the IBM mq-golang package and deploy that in your Windows docker container.

  • https://github.com/ibm-messaging/mq-golang
like image 1
intltechventures Avatar answered Oct 06 '22 21:10

intltechventures