Author |
Message
|
krchoy |
Posted: Tue Sep 10, 2002 2:19 pm Post subject: How do I ignore the <mcd> folder at MQInput? |
|
|
Novice
Joined: 13 May 2002 Posts: 12
|
As per the help text:
Quote: |
If the incoming message has an MQRFH2 header, you do not have to enter the details on the Default tab because the values can be derived from the <mcd> folder in the MQRFH2 header. For example:
<mcd><Msd>MRM</Msd><Set>DHM4UO906S001</Set><Type>receiptmsg1</Type><Fmt>XML</Fmt></mcd>
If the values in the MQRFH2 header are different to any values set on the Default tab, the MQRFH2 header values take precedence. |
However we have a situation where a package is generating <mcd> information which we don't want. (Don't ask why ) Our MQInput node is gagging on the message.
We've tried to override the <Msd> to be XML or BLOB - if we can get past the MQInout node we believe we could use a ResetContentDescriptor. Suggestions? |
|
Back to top |
|
 |
kirani |
Posted: Tue Sep 10, 2002 4:49 pm Post subject: |
|
|
Jedi Knight
Joined: 05 Sep 2001 Posts: 3779 Location: Torrance, CA, USA
|
I can think of two options here.
1. Write a program, which reads message from queue that was generated by package and removes the MQRFH2 header. The same program then writes new message to another queue , which will be processed by your message flow.
2. Write a plug-in Input node, which removes MQRFH2 header. _________________ 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 |
|
 |
lung |
Posted: Wed Sep 11, 2002 12:42 am Post subject: |
|
|
 Master
Joined: 27 Aug 2002 Posts: 291 Location: Malaysia
|
I know it's possible to omit the MQRFH2 header in the compute node...
SET OutputRoot.MQRFH2 = NULL;
So maybe you can try...
SET OutputRoot.MQRFH2.mcd = NULL;
?
 _________________ lung |
|
Back to top |
|
 |
lbrett |
Posted: Wed Sep 11, 2002 3:52 am Post subject: |
|
|
Novice
Joined: 24 Jan 2002 Posts: 20
|
Agreed. If you are unable to get past the input node, then check the Properties of the node to ensure that Validate (Advanced tab() is not checked. MQSI will not parse the body of the message and you will be able to remove the RFH header and switch the message properties in the compute node. For example, if the message is an XML message, then your compute node would have the follow:
SET OutputRoot.MQRFH2.mcd = NULL;
SET OutputRoot.XML=InputBody;
or
SET OutputRoot.MQRFH2.mcd.Msd='XML'; |
|
Back to top |
|
 |
kirani |
Posted: Wed Sep 11, 2002 8:25 am Post subject: |
|
|
Jedi Knight
Joined: 05 Sep 2001 Posts: 3779 Location: Torrance, CA, USA
|
krchoy,
Just realized that your input message will not be parsed at the MQInput node. As lbrett said, in compute node change/remove your MQRFH2 header. Alternatively you could use RCD node to parse your message. _________________ 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 |
|
 |
krchoy |
Posted: Wed Sep 11, 2002 12:55 pm Post subject: |
|
|
Novice
Joined: 13 May 2002 Posts: 12
|
re Validate advanced option: no, we don't have it turned on.
re all Compute node and RCD strategies: can't get there if we can't get past the Input node.
Current plan is to have a program pre-process the message and eliminate the <mcd> folder.
Interestingly, we thought we had a winner with the RCD at first but that's because we were trying the flow in debug mode. Seems that debug mode lets the "bad" message in so it can be debugged. Once we tried to run it, the message always went to failure. |
|
Back to top |
|
 |
philip.baker |
Posted: Wed Sep 11, 2002 2:42 pm Post subject: |
|
|
 Voyager
Joined: 21 Mar 2002 Posts: 77 Location: Baker Systems Consulting, Inc. - Tampa
|
FYI:
On a Win2k Broker using WMQIV2.1CSD02 and MQSeriesV5.2.1CSD04, I was able to get the following:
Flow:
InputNode->Compute Node->OutputNode
Nothing set within the InputNode (besides the default settings) except the Input Queue Name
ComputeNode ESQL:
SET OutputRoot = InputRoot;
DETACH OutputRoot.MQRFH2.mcd;
-------------------------------------------------------------
Message placed on Input Queue using RFHUTIL with RFH2 header and mcd folder
52 46 48 20 02 00 00 00 RFH ....
70 00 00 00 22 02 00 00 p..."...
B5 01 00 00 20 20 20 20 µ...
20 20 20 20 00 00 00 00 ....
B8 04 00 00 48 00 00 00 ¸...H...
3C 6D 63 64 3E 3C 4D 73 <mcd><Ms
64 3E 58 4D 4C 3C 2F 4D d>XML</M
73 64 3E 3C 53 65 74 3E sd><Set>
54 45 73 74 3C 2F 53 65 TEst</Se
74 3E 3C 54 79 70 65 3E t><Type>
54 65 73 74 3C 2F 54 79 Test</Ty
70 65 3E 3C 46 6D 74 3E pe><Fmt>
54 65 73 74 3C 2F 46 6D Test</Fm
74 3E 3C 2F 6D 63 64 3E t></mcd>
31 30 30 30 34 34 31 32 10004412
Message put on Output Queue by the flow .......
52 46 48 20 02 00 00 00 RFH ....
44 00 00 00 22 02 00 00 D..."...
B5 01 00 00 20 20 20 20 µ...
20 20 20 20 00 00 00 00 ....
B8 04 00 00 1C 00 00 00 ¸.......
3C 6D 63 64 3E 3C 4D 73 <mcd><Ms
64 3E 78 6D 6C 3C 2F 4D d>xml</M
73 64 3E 3C 2F 6D 63 64 sd></mcd
3E 20 20 20 31 30 30 30 > 1000
34 34 31 32 35 31 30 30 4412
----------------------------------------
Regards,
Phil
NEVER MIND:
THIS was a bad example. I used 'XML' to populate the Msd field. The issue is with the field being populated with the value of 'MRM'. |
|
Back to top |
|
 |
|