MQ

MQ

Join this online group to communicate across IBM product users and experts by sharing advice and best practices with peers and staying up to date regarding product enhancements.

 View Only

Procedure to put more than 4MB messages from TxSeries to IBM MQ using XA-Client transaction

By Prema Laxmanachar posted Thu August 06, 2020 06:39 AM

  


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:

 

  1. 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.

 

  1. 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)

  1. 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" 

  

  1. 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"

 

  1. Start the cics region using "cicscp -v start region regionname StartType=cold"

 

  1. 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

 

 

2 comments
42 views

Permalink

Comments

Thu August 06, 2020 07:49 AM

MAXMSGL on your CHLTYPE(SVRCONN)  - Yes, you need to set for SVRCONN  as well. Restart Queue manager is not mandatory here. I had updated the blog, Thank you for your reply.

Thu August 06, 2020 06:55 AM

In step 2, do you need to set MAXMSGL on your CHLTYPE(SVRCONN) as well?

Also, what is the purpose of restarting the queue manager in step 3? What configuration have you changed that requires a restart?