Author |
Message
|
Sabapathi |
Posted: Mon Aug 04, 2008 8:38 pm Post subject: Getting error code 2033 |
|
|
Newbie
Joined: 04 Aug 2008 Posts: 3
|
Hi,
I am facing one issue when testing with huge mass of transactions.
The problem is as per below.
I have two seperate programs to put and get messages from request Queue and Response Queue respectively....
In development it is working fine.....but users did strees test means my get program fails some times i am getting return code 2033.
for getq i am using msgid
In GetQ Program, I set following options
MOVE MSG-Q-GETID TO MQMD-MSGID.
MOVE MQCI-NONE TO MQMD-CORRELID
COMPUTE MQGMO-OPTIONS = MQGMO-WAIT +
MQGMO-ACCEPT-TRUNCATED-MSG +
MQGMO-SYNCPOINT +
MQGMO-CONVERT +
MQGMO-FAIL-IF-QUIESCING.
MOVE 90000 TO MQGMO-WAITINTERVAL.
MOVE MQFMT-STRING TO MQMD-FORMAT
CALL 'MQGET' USING QMGR-CON-HANDLE
RES-Q-HANDLE
MQMD
MQGMO
INPUT-BUFFER-LENGTH
WS-OUTPUT-BUFFER
RETURNED-LENGTH
COMP-CODE
REASON-CODE.
In PutQ Program, I set following options
COMPUTE MQPMO-OPTIONS = MQPMO-SYNCPOINT +
MQPMO-FAIL-IF-QUIESCING.
MOVE MQMI-NONE TO MQMD-MSGID.
MOVE MQCI-NONE TO MQMD-CORRELID.
MOVE MQMT-DATAGRAM TO MQMD-MSGTYPE
CALL 'MQPUT' USING QMGR-CON-HANDLE
REQ-Q-HANDLE
MQMD
MQPMO
MSG-LENGTH
MSG-DATA
COMP-CODE
REASON-CODE. |
|
Back to top |
|
 |
Mr Butcher |
Posted: Mon Aug 04, 2008 9:07 pm Post subject: |
|
|
 Padawan
Joined: 23 May 2005 Posts: 1716
|
and what is your question? when you get with a specific msgid, and get a 2033 returned (no msg available) then this means, that there is no message with that specific msgid on the queue. _________________ Regards, Butcher |
|
Back to top |
|
 |
Sabapathi |
Posted: Mon Aug 04, 2008 9:15 pm Post subject: |
|
|
Newbie
Joined: 04 Aug 2008 Posts: 3
|
Mr Butcher wrote: |
and what is your question? when you get with a specific msgid, and get a 2033 returned (no msg available) then this means, that there is no message with that specific msgid on the queue. |
after i put the message i will get the msgid from MQMD-MSGID and stored into one variable and use that variable when i do the MQget.
CALL 'MQPUT' USING QMGR-CON-HANDLE
REQ-Q-HANDLE
MQMD
MQPMO
MSG-LENGTH
MSG-DATA
COMP-CODE
REASON-CODE.
IF COMP-CODE EQUAL MQCC-OK
MOVE MQMD-MSGID TO MQMD-CORRELID
MOVE MQMD-MSGID TO MSG-PUT-MID
MOVE MQMD-CORRELID TO MSG-PUT-CID
MOVE COMP-CODE TO MSG-PUT-RSP
DISPLAY ' MQMD-MSGID : ' MQMD-MSGID
DISPLAY ' MQMD-CORRELID : ' MQMD-CORRELID |
|
Back to top |
|
 |
zpat |
Posted: Mon Aug 04, 2008 11:28 pm Post subject: |
|
|
 Jedi Council
Joined: 19 May 2001 Posts: 5866 Location: UK
|
I assume this is meant to be a client end request-reply design and some other program is the server end?
The client end would normally get the response message by correlid, have saved the value from the put message msgid.
The server end would normally copy the msg id of the request to the correlid of the reply message.
Incidentally set the MQMD.format before the put, not before the get.
Also you must COMMIT the put if you expect the message to be available for a get! |
|
Back to top |
|
 |
Sabapathi |
Posted: Tue Aug 05, 2008 1:34 am Post subject: |
|
|
Newbie
Joined: 04 Aug 2008 Posts: 3
|
zpat wrote: |
I assume this is meant to be a client end request-reply design and some other program is the server end?
The client end would normally get the response message by correlid, have saved the value from the put message msgid.
The server end would normally copy the msg id of the request to the correlid of the reply message.
Incidentally set the MQMD.format before the put, not before the get.
Also you must COMMIT the put if you expect the message to be available for a get! |
Dear Zpat,
Thanks for u r reply...
I have 2 cics region let say CICSUIBS AND CICSEAI
MQ Is in CICSEAI and my PutQ program and Getq program are in CICSEAI
I triger the transaction in CICSUIBS then my PutQ progame put the message into the ReqQ from there broker get the message and send to other application. This one is always succesful....
then the responce message also come from that application and broker also put the response message in to the ResponseQ ,
But my get program not able to get that response message. In Response Queue message depth is there.
pls let me know where how to commit my put message. |
|
Back to top |
|
 |
zpat |
Posted: Tue Aug 05, 2008 4:25 am Post subject: |
|
|
 Jedi Council
Joined: 19 May 2001 Posts: 5866 Location: UK
|
I really can't debug your code remotely.
The correct logic (basic MQI only shown) is like this
Client app:
Set format MQSTR etc
PUT request message (NO_SYNCPOINT) on REQUESTQ
save the msgid as correlid
GET reply message by CORRELID (NO_SYNCPOINT, CONVERT, WAIT) on REPLYQ
Server app:
GET request message (SYNCPOINT, CONVERT, WAIT) on REQUESTQ
Check MQMD.backout count and if > 3 COMMIT (discard request) and loop
set format MQSTR etc
set CORRELID from MSGID
PUT reply message (SYNCPOINT) on REPLYQ
COMMIT
loop |
|
Back to top |
|
 |
kevinf2349 |
Posted: Tue Aug 12, 2008 7:03 am Post subject: |
|
|
 Grand Master
Joined: 28 Feb 2003 Posts: 1311 Location: USA
|
Can we assume you have either a commit or a close after your MQPUT? |
|
Back to top |
|
 |
|