Author |
Message
|
mq_series |
Posted: Wed Jun 25, 2003 7:46 am Post subject: MQSI VS IMS |
|
|
Apprentice
Joined: 29 Oct 2001 Posts: 30
|
Hi,
Please help in understanding the following.
The scenario is MQSIver 2.1 is on Win NT. Message in XML form are reaching the broker, from some other system,the broker converts them to cobol specific format and then forward them to MQSeries on Mainframe .IMS OTMA Bridge is used on mainframe side. The IMS transaction (cobol program having MQ calls) called up as soon as message reach on IMS Queue.The message is read using IMS GU call. The program processes the message and send a reply using normal MQCONN,MQOPEN and MQPUT call.
When we read the message from IMS queue using GU call there is no MQMD or any other MQ header , only the application data part is available in the message.But when we send the reply message then it has MQMD and MQRFH2 header .
My question is, does the MQSI msgflow attached the MQMD,MQRFH2 and MQIIH or any other header before sending the request msg to IMS bridge ???
If yes then how they get removed ?
Please help me in understanding the above scenario
Regards
rkv |
|
Back to top |
|
 |
kirani |
Posted: Wed Jun 25, 2003 10:55 am Post subject: |
|
|
Jedi Knight
Joined: 05 Sep 2001 Posts: 3779 Location: Torrance, CA, USA
|
mq_series wrote: |
My question is, does the MQSI msgflow attached the MQMD,MQRFH2 and MQIIH or any other header before sending the request msg to IMS bridge ???
|
WMQI will not add any header on it's own to the output message, you have to write ESQL code to build any header. Please take a look at your message flow to find what exactly WMQI is doing in ESQL code.
You might want to look at the COBOL program and see why it's dropping these headers. _________________ Kiran
IBM Cert. Solution Designer & System Administrator - WBIMB V5
IBM Cert. Solutions Expert - WMQI
IBM Cert. Specialist - WMQI, MQSeries
IBM Cert. Developer - MQSeries
|
|
Back to top |
|
 |
mq_series |
Posted: Wed Jun 25, 2003 11:33 pm Post subject: |
|
|
Apprentice
Joined: 29 Oct 2001 Posts: 30
|
Hi Kirani,
Thanks for the reply
Boss In cobol program when we read the message using GU call we are getting MQRFH2 header and application data.No MQMD or any other header. The program is in production for 5 months.
I can not check the ESQL as I don't have access to that and thats why I am asking it.The MSG ID and any Reply to q and qmgr are also retrieved as part of application data as the msgflow is setting it like this.
Somebody told me that IMS strips off the MQMD.Is it true ?
I donot understand why we are not getting the MQMD,MQIIH.
Also when we send the reply through this program to MQSI we are setting only the MQMD,MQRFH2 and application data in the reply msg.
The IBM books says that for using the IMS bridge , the MQSI must set MQIIH header.I just want to confirm that whether MQIIH is also set by the sending msgflow.
Regards
rkv |
|
Back to top |
|
 |
Craig B |
Posted: Wed Jun 25, 2003 11:54 pm Post subject: |
|
|
Partisan
Joined: 18 Jun 2003 Posts: 316 Location: UK
|
When the MQ-IMS bridge sends a message to IMS via OTMA then it does not include any information that is either related to MQ to the use of the MQ-IMS Bridge. It just passes the application data that is in the message body of the message. Therefore the MQMD is not passed to the IMS transaction because this is MQ specific. The MQ-IMS bridge stores the MQMD details of the message it has sent to to IMS via OTMA so that it can correlate reply messages back via the bridge. The MQIIH contains information relating to the invocation of the transaction etc and therefore this is not application data either. So when the data arrives in IMS you would not expect to see the MQMD or the MQIIH.
I am not sure about header ordering .... I think if the message is destined for the MQ-IMS bridge then the MQIIH needs to be after the MQMD. But you may know more about this than I do. _________________ Regards
Craig |
|
Back to top |
|
 |
mq_series |
Posted: Thu Jun 26, 2003 3:51 am Post subject: |
|
|
Apprentice
Joined: 29 Oct 2001 Posts: 30
|
Thanks Craig,
The fact is this program is running successfully in production environment.I could not understand it as I was then not having understanding on MQSI.Thats why I did not ask the team developing msgflow on MQSI side.
I was involved in programming on IMS side only.But its true that on IMS side the message read through GU call did not have anything except MQRFH2 and application data.The msgId and reply to q and qmgr were made part of the application data as it was the only way for my application to correlate the reply msg.
As far as I remember the msg id and other info was explicitly set by MQSI developer to be part of aplication data and not done automatically by the IMS bridge.
I guess the order of request msg headers would have been MQMD+MQIIH+MQRFH2 and then application data.
Please give ur opinion on this.
Regards
rkv |
|
Back to top |
|
 |
dsmq |
Posted: Thu Jun 26, 2003 11:20 am Post subject: |
|
|
Acolyte
Joined: 20 Jun 2002 Posts: 59
|
Hi
I think MQ -IMS Bridge rejects the messages with MQRFH2 Header. Before sending the messages to the Bridge , nullify the MQRFH2 Header. The order for the headers is MQMD , MQIIH and Data. You need to construct the MQIIH header in the MQSI Message Flow . The MQMD format will be
SET OutputRoot.MQMD.Format= 'MQIMS ';
Hope this will help. |
|
Back to top |
|
 |
mq_series |
Posted: Thu Jun 26, 2003 7:56 pm Post subject: |
|
|
Apprentice
Joined: 29 Oct 2001 Posts: 30
|
Hi,
The fact is on IMS side we are getting the MQRFH2 header and application data when our program reads the message using GU call.
However while sending the reply we are sending MQMD+MQRFH2+application data
The program is in production mode for last 5 months.
Regards
rkv |
|
Back to top |
|
 |
Craig B |
Posted: Sun Jun 29, 2003 10:10 pm Post subject: |
|
|
Partisan
Joined: 18 Jun 2003 Posts: 316 Location: UK
|
Hi,
I am not sure if I have mis-understood what you are trying to ask. Having re-read this thread then it would seem that you are NOT asking why you are only getting the MQRFH2 + Application data in IMS, but are actually asking that when you send the reply back from IMS then this has an MQMD + MQRFH2 + application data. Is this what you are aking??
From your comments saying that this has been in production for 5 months then you are saying that this scenario works fine but you are wondering why it works fine. Is this correct??
If this is the case then I assume that you are saying that you are seeing the MQMD on the reply message when it is back in MQ, and not in your IMS transaction/program. If this is the case, then the MQ/IMS bridge is responsible for putting an MQMD on the data sent back from IMS through OTMA. When a request is sent to IMS via the MQ/IMS bridge then the bridge strips of the MQMD but remembers its details so that it can correlate associated replies from IMS. When the reply data arrives back from OTMA then the MQ/IMS bridge builds an MQSeries message using details from the original request MQMD and the data received from IMS. It has to add an MQMD because every message on an WMQ queue manager has to have and MQMD for it to be a valid message. Without this MQMD, the message would not be able to processed again by the queue manager and could not even reach the broker on NT.
Does this answer your question? If not can you please clarify what you are trying to ask.
Thanks _________________ Regards
Craig |
|
Back to top |
|
 |
mq_series |
Posted: Mon Jun 30, 2003 5:41 am Post subject: |
|
|
Apprentice
Joined: 29 Oct 2001 Posts: 30
|
Hi Craig,
Thanks for your kind attention and patience.
The scenario is a simple Request/Reply pattern.
1)Request Message from some application in XML format is sent to mqseries on Win Nt, which forwards it to MQSI(win nt) .MQSI reads the message and convert it in Cobol format and then forward it to IMS system.On IMS side we are using IMS bridge (OTMA) .The Cobol program on IMS picks the request msg using GU call.In this incoming messge we donot have MQMD , but only MQRFH2 and application data.The COBOL structure used for reading this message does not have MQMD.
In order to correlate the request msg , MSGID and some other fields from MQMD of the request msg were copied to some field in application data, by the MQSI developer.
2) The cobol program then processes the msg and prepares a reply , we use MQCONN,MQOPEN and MQPUT1 calls to send the reply in the same program.The cobol structure used for preparing the reply message has MQMD,MQRFH2 and application data copybooks.
The MSGID of the request msg is available as application data on IMS side . This MSGID we are copying again to some field of application data.
3) The reply msg goes back to the mqsi(winNt) where the msgflow picks up the msg and converts it to XML format , the msgid (sent earlier as part of application data) is copied to the MQMD correlation field of the output XML msg.The XML msg is then sent back to the MQSeries from which the originating application pick is up.
In this project I was on IMS side and at that time was having little knowledge of MQSI, so I was just trying to confirm that what msg headers were set by MQSI developer before sending the request message to IMS.
Did they set MQMD+MQIIH+MQRFH2 ? or some other header.
Regards
rkv |
|
Back to top |
|
 |
|