Hi All,
Thanks all for all the support, great, I have created a simple Java JMS app to test the solution. So I have a solution where I can see in the log AMQERR01.log that my Java JMS client tries to connect with MQ. Because it gives an error
Real name QManager = QMAN_ACC which is high available running on a temporary Linux environment. HA is tested and works when using Server connection channels in a JMS app.
Host1 = accimq01.example.nl(1414)
Host2 = accimq02.example.nl(1414)
This is the Clientchannel definition command:
DEFINE CHANNEL(ESB.CLIENTCONN) CHLTYPE(CLNTCONN) TRPTYPE(TCP) CONNAME('accimq01.example.nl(1414),accimq02.example.nl(1414)') DEFRECON(QMGR) QMNAME(QMAN_HA) REPLACE
Which results in after running runmqsc -n:
-bash-4.2$ export MQCHLTAB=AMQCLCHL.TAB
-bash-4.2$ runmqsc -n
5724-H72 (C) Copyright IBM Corp. 1994, 2016.
Starting local MQSC for 'AMQCLCHL.TAB'.
DIS CHL(*)
2 : DIS CHL(ESB.CLIENTCONN)
AMQ8414: Display Channel details.
CHANNEL(ESB.CLIENTCONN)
CHLTYPE(CLNTCONN)
AFFINITY(PREFERRED)
ALTDATE(2021-03-30)
ALTTIME(20.45.44)
CERTLABL( )
CLNTWGHT(0)
COMPHDR(NONE)
COMPMSG(NONE)
CONNAME(accimq01.example.nl(1414),accimq02.example.nl(1414))
DEFRECON(QMGR)
DESCR( )
HBINT(300)
KAINT(AUTO)
LOCLADDR( )
MAXMSGL(4194304)
MODENAME( )
PASSWORD( )
QMNAME(QMAN_HA)
RCVDATA( )
RCVEXIT( )
SCYDATA( )
SCYEXIT( )
SENDDATA( )
SENDEXIT( )
SHARECNV(10)
SSLCIPH( )
SSLPEER( )
TPNAME( )
TRPTYPE(TCP)
USERID( )
Basic code to connect in Java JMS is this:
mqConnectionFactory.setQueueManager("QMAN_HA"); // I am refering to the group name in the client connection channel. Is this correct ?
java.net.URL chanTab1 = new URL("file:///C:/Users/bpSligro/eclipse-workspace/TestIBMMQ/AMQCLCHL.TAB"); //location of the AMQCLCHL.TAB.
mqConnectionFactory.setCCDTURL(chanTab1);
connection = mqConnectionFactory.createConnection();
And this is the error I get when running the Java JMS app:
03/31/2021 08:04:57 AM - Process(4395.6) User(mqm) Program(amqrmppa)
Host(accimq01.example.nl) Installation(Installation1)
VRMF(9.0.1.0) QMgr(QMAN_ACC)
AMQ9780: Channel to remote machine '192.168.178.11' is ending due to an error.
EXPLANATION:
Channel 'ESB.CLIENTCONN' between this machine and the remote machine
'192.168.178.11' encountered an error and will now end. In some cases the
channel name can not be determined and so is shown as '????'.
This message will be accompanied by other messages which explain the cause of
the error.
ACTION:
Tell the systems administrator, who should attempt to identify the cause of the
channel failure using problem determination techniques. For example, look for
FFST files, and examine the error logs on the local and remote systems where
there may be messages explaining the cause of failure. More information may be
obtained by repeating the operation with tracing enabled.
----- amqrcoba.c : 1310 -------------------------------------------------------
03/31/2021 08:04:57 AM - Process(4395.6) User(mqm) Program(amqrmppa)
Host(accimq01.example.nl) Installation(Installation1)
VRMF(9.0.1.0) QMgr(QMAN_ACC)
AMQ9519: Channel 'ESB.CLIENTCONN' not found.
EXPLANATION:
The requested operation failed because the program could not find a definition
of channel 'ESB.CLIENTCONN'.
ACTION:
Check that the name is specified correctly and the channel definition is
available.
----- amqrcoba.c : 1347 -------------------------------------------------------
03/31/2021 08:04:57 AM - Process(4395.6) User(mqm) Program(amqrmppa)
Host(accimq01.example.nl) Installation(Installation1)
VRMF(9.0.1.0) QMgr(QMAN_ACC)
AMQ9999: Channel 'ESB.CLIENTCONN' to host '192.168.178.11' ended abnormally.
EXPLANATION:
The channel program running under process ID 4395 for channel 'ESB.CLIENTCONN'
ended abnormally. The host name is '192.168.178.11'; in some cases the host
name cannot be determined and so is shown as '????'.
ACTION:
Look at previous error messages for the channel program in the error logs to
determine the cause of the failure. Note that this message can be excluded
completely or suppressed by tuning the "ExcludeMessage" or "SuppressMessage"
attributes under the "QMErrorLog" stanza in qm.ini. Further information can be
found in the System Administration Guide.
----- amqrmrsa.c : 938 --------------------------------------------------------
Any idea what I am doing wrong ??
------------------------------
Bernard Pittens
Integration Engeneer
Sligro Foodgroup B.V.
Veghel
------------------------------
Original Message:
Sent: Tue March 30, 2021 04:26 AM
From: Jamie Squibb
Subject: Multi Instance or High Available IBM MQ support for SAP PO ?
Hi Bernard,
Further to Morag and Neil's replies, you can generate a CCDT on the MQ Appliance by using the rcrmqobj command in the mqcli.
rcrmqobj -m queue_manager_name -t clchltab
A file named queue_manager_name_AMQCLCHL.TAB is generated and saved in the mqbackup:// file system, which you can then download by using either the web UI, the REST API, or SCP (the copy command).
For more information please see Creating and downloading a CCDT file in the MQ Appliance Knowledge Center at https://www.ibm.com/support/knowledgecenter/SS5K6E_9.2.0/com.ibm.mqa.doc/administering/ad00230_.html
Kind regards,
Jamie
------------------------------
Jamie Squibb
Original Message:
Sent: Mon March 29, 2021 07:47 AM
From: Bernard Pittens
Subject: Multi Instance or High Available IBM MQ support for SAP PO ?
hi Morag,
You are a great help, YES this is exactly what I am looking for. I can share this with our SAP PO consultant.
Till now we only used serverCon channels but I have seen we can create clientConnection channels also, I have gathered some documentation.
Brings me to the next question:
We use MQ Appliances 2001A. Do you know how I can retrieve or download the CCDT table from the MQ Appliance?
Thanks
Bernard
------------------------------
Bernard Pittens
Integration Engeneer
Sligro Foodgroup B.V.
Veghel
Original Message:
Sent: Sun March 28, 2021 06:11 PM
From: Morag Hughson
Subject: Multi Instance or High Available IBM MQ support for SAP PO ?
If the SAP interfaces don't provide a way to give the connection list, may I suggest you try using a CCDT instead?
I found this blog post about using the CCDT in what I think is the same environment, although I have to admit to not understanding the difference between SAP PO and SAP PI. The screenshots in the blog post appear to look the same as ones you have shared in the past about SAP PO.
Hope that helps. If you need help with how to make the CCDT just shout. You can either have a comma-separated CONNAME in one CCDT entry or have two CCDT entries. Both should achieve what you need.
Cheers,
Morag
------------------------------
Morag Hughson
MQ Technical Education Specialist
MQGem Software Limited
Website: https://www.mqgem.com
Original Message:
Sent: Sat March 27, 2021 05:02 AM
From: Bernard Pittens
Subject: Multi Instance or High Available IBM MQ support for SAP PO ?
Hi,
We are migrating to SAP and SAP PO in general. We use MQ Appliances which are High Available configured in a fail over configuration.
Normally when I created a Java JMS app to ensure reconnection I us e a connection string like this in a comma delimited list:
mqmanager1.corp.example.com(1414),mqmanager2.corp.example.com(1414).
And in the Java JMS code I use this:
setClientReconnectOptions(WMQConstants.WMQ_CLIENT_RECONNECT_Q_MGR);
.setClientReconnectTimeout(600);
And this always works for Java JMS apps.
But in SAP PO it is not enough to use a connectionstring list, maybe somebody has an idea how to solve a multi instance high availability MQ reconnect config on the SAP PO Client ?
Do I have to use some advanced parameters in SAP PO, ?
Thanks
Kind Regards
------------------------------
Bernard Pittens
Integration Engeneer
Sligro Foodgroup B.V.
Veghel
------------------------------