Problem Statement: Unable to Put messages larger than 4MB on the queue, receiving 2010 “MQRC_DATA_LENGTH_ERROR”
Summary: This blog explains the Procedure to put more than 4MB messages from using XA-Client transaction from IBM TxSeries to IBM MQ Server. When user tries to put more than 4MB message, it was giving “MQRC_DATA_LENGTH_ERROR “ and not allowing the user to put the messages more than 4 MB.
Below are the steps to follow:
- IBM MQ server should be installed on the remote machine and create the Queue manager and Queue manager objects and set all relevant QM objects maxmsgl to 100MB. Like Queue Manager, Local queue and channel maxmsgl should be set to 100MB.
- On the MQ Server machine:
Define SVRCONN and CLNTCONN channel and allow the MAXMSGL to 100MB
DEFINE CHANNEL(CISC.DEF.CLNTSVRCONN) CHLTYPE(clntconn) CONNAME(‘Local IP(port no.)') QMNAME(QM) MAXMSGL(104857600)
DEFINE CHANNEL(CISC.DEF.CLNTSVRCONN) CHLTYPE(SVRCONN) TRPTYPE(TCP) MAXMSGL(104857600)
Start the listener.
3. Then copy the CCDT (/var/mqm/qmgrs/QMNAME/@ipcc) file from MQ server machine to
/var/mqm in MQ client machine. (IBM MQ client and IBM TxSeries should be in same machine)
- On the MQ Client and TxSeries machine :Create the cics region and update the XAD stanza as below:
XAD.stanza file located in /var/cics_regions/region name/database/XAD
XAOpen="qmname=QMNAME"
Eg: XAOpen="qmname=QM"
- Update the cics region environment file as below:
Environment file located in : /var/cics_regions/region name/ update the file as below
CICS_MQ_QMGR_NAME=QMNAME
CICS_MQ_INIT_QUEUE=CICS.TRIG.QUEUE
CICS_MQ_QUEUE_NAME=CICS.LOCAL.QUEUE
CICS_MQ_SAMPLE_TYPE=XA
MQCHLLIB="/var/mqm"
MQCHLTAB="AMQCLCHL.TAB"
- Start the cics region using "cicscp -v start region regionname StartType=cold"
- Initiate PUT Transaction - put message more than 4 MB should be successful.
References:
https://www.ibm.com/support/knowledgecenter/en/SSFKSJ_9.1.0/com.ibm.mq.con.doc/q016620_.htm
https://www.ibm.com/support/knowledgecenter/en/SSFKSJ_9.1.0/com.ibm.mq.con.doc/q016480_.htm