|
RSS Feed - WebSphere MQ Support
|
RSS Feed - Message Broker Support
|
 |
|
Warning on MQGET Propagating message to the failure terminal |
« View previous topic :: View next topic » |
Author |
Message
|
mqxplorer |
Posted: Wed Dec 26, 2012 7:12 pm Post subject: Warning on MQGET Propagating message to the failure terminal |
|
|
 Master
Joined: 22 Jun 2009 Posts: 206
|
Hi All,
I have got the exception in subject line in PRODUCTION after deploying a flow wit slight modifications to it.
I have gone through a lot of posts in this forum, however, the more posts I read, the more I got confused ( may be my mind is bit tensed as this is a PROD issue).
We have a message flow which receives messages from a mainframe system (model 204). We receive a delimited message and we have a MRM message set with TDS format. We had situations where we were getting values which after transformation were causing issues in the subsequent flow as they were non-representable XML characters. As the mainframe guys were not ready to clean up their data, I wrote a java method which strips off the invalid XML characters. In order to do this, I read the mainframe message in BLOB domain with MQInput node convert option selected with CCSID 1208 and Encoding 546. After the MQInput node I have compute node which first converts the BLOB data from MQInput node to CHAR using CCSID 1208 and calls the java routine to strip off the invalid xml charatcters (non-printable xml characters). I pass it to RCD node where I reset the message domain to MRM and then do the mapping from MRM to XML. This has worked in all lower environments except in PROD. I got the exception in the subject line in PROD.
There is one more thing I need to mention here, as the mainframe folks were not ready to send the data with 0x0 or similar ones in lower environments, I modified one of the existing messages saved from the input queue (that receives the messages from the mainframe system) (contains the MQMD headers) using vi editor in linux box (dev box) and used to test my changes up to Staging. I used the below commands to edit the binary file.
Code: |
Open in binary mode:
vi –b filename
Convert file to hex dump:
:%!xxd
Edit the file (add/remove)
Convert back to binary:
:%!xxd –r
Save the file:
:wq |
As I can't use the hand edited messages in PROD, when the mainframe system sent messages in PROD, all failed with the reason code in subject line. I did not understand the reason why it failed in PROD not up to Staging. I am not sure if I understood the covert option in MQInput node. Can anyone help me solve this?
Thanks in advance..
Thanks
mqxplorer |
|
Back to top |
|
 |
kash3338 |
Posted: Wed Dec 26, 2012 9:24 pm Post subject: Re: Warning on MQGET Propagating message to the failure term |
|
|
Shaman
Joined: 08 Feb 2009 Posts: 709 Location: Chennai, India
|
mqxplorer wrote: |
I have got the exception in subject line in PRODUCTION after deploying a flow wit slight modifications to it. |
What slight modification have you made for PROD?
Also, do you have a copy of the actual message which comes from MAINFRAME's in PROD? If so did you try to run that message in lower env? |
|
Back to top |
|
 |
fjb_saper |
Posted: Thu Dec 27, 2012 1:49 am Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
DO NOT USE THE CONVERT option on MQInput node.
Let the broker convert the data. Especially with MRM, and CCSIDs like 1208 where you may get multibyte characters... Also do not use convert on the channel...
Just apply the MRM to the data on the MQInput node without using convert.
If your output CCSID is 1208 there should not be any unconvertable XML characters... unless the MF is sending control characters...(why should they?)
Have fun  _________________ MQ & Broker admin |
|
Back to top |
|
 |
mqxplorer |
Posted: Thu Dec 27, 2012 6:06 am Post subject: |
|
|
 Master
Joined: 22 Jun 2009 Posts: 206
|
fjb_saper wrote: |
DO NOT USE THE CONVERT option on MQInput node.
Let the broker convert the data. Especially with MRM, and CCSIDs like 1208 where you may get multibyte characters... Also do not use convert on the channel...
Just apply the MRM to the data on the MQInput node without using convert.
If your output CCSID is 1208 there should not be any unconvertable XML characters... unless the MF is sending control characters...(why should they?)
Have fun  |
Thanks for your response. The whole problem is with the data coming from mainframe system which is sending control characters like 0x0, 0x1 etc and when asked, their response is that they don't have issue with that data while storing it in their database, hence they feel it is not their problem. In order to deal with control characters, I wrote a java routine which strips-off the non-representable XML characters. Initially, I did this after transforming the message from MRM to XML parsing the input message with MRM message set. However, we had one more issue which I thought I would resolve it by pasring the input message in BLOB doamin. We use flow monitoring for auditing purposes for which we specify $Properties and $Body on the input node which emits the payload as an xml file with broekr's pub-sub mechanism. As the emiited audit message for payload is reprsented as an XML, it also fails in the audit flow (does databse insertion) as the input message contains control characters.
I am really confused why this did not afil upto Staging and why in PROD only the failure? Is it because the messages I used till staging were the edited messages in a vi editor? I did not touch the message headers at all, I just used a valid sample and replaced valid values with some control charatcers. I tested with these samples and it worked.
I could not understand the purpose of Convert option on MQInput node. What does it exactly do?
Thanks
mqxplorer |
|
Back to top |
|
 |
mqxplorer |
Posted: Thu Dec 27, 2012 7:50 am Post subject: |
|
|
 Master
Joined: 22 Jun 2009 Posts: 206
|
I found out something interesting. When I tried to process the PROD failed messages in DEV, I see the same exception as in PROD. When I observed the difference between the messages I have used to test in lower level environments and the ones in PROD, I see the message format of the messages I used in lower level environments is 'MQSTR' where as the ones that faield in PROD do not have the message format set to MQSTR. When I changed the message format of the PROD faield messages to 'MQSTR' and tried processing them in DEV, they worked fine. Looks like the issue is with the message format. With this analysis, can I go ahead and ask the mainframe application team folks to set the message format to 'MQSTR' so that I don't need to change anything in my code?
Thanks
mqxplorer |
|
Back to top |
|
 |
mqjeff |
Posted: Thu Dec 27, 2012 8:06 am Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
It would make a difference to know what the actual message format actually is, then you would know whether or not you should be performing the necessary steps to deal with that format, rather than forcing the mainframe to change what it's sending. |
|
Back to top |
|
 |
|
|
 |
|
Page 1 of 1 |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|
|
|