Author |
Message
|
George Carey |
Posted: Mon Sep 28, 2009 11:02 am Post subject: MQRC_RFH_ERROR |
|
|
Knight
Joined: 29 Jan 2007 Posts: 500 Location: DC
|
Problem:
Messages landing on DLQ with DLQ Header showing MQRC_RFH_ERROR
Scenario:
JMS messages being sent, XML SOAP payloads
Messages coming across a comm link from/source a DataPower box to a target queue on a Linux box.
Environments:
Source QMGR windows XP, MQ v 6.0.2.2+
_____Intermediate GW QMGRs (sending)Windows XP, MQ 6.0.2.3?
_________________________(receiving) Solaris MQ v 6.0.2.2
Target QMGR Linux MQv 7.0.0.2
Questions:
1.) Messages landing on target qmgr DLQ ... does the message have to be attempted to be read by target application to land on the target DLQ? Or is MQ placing it on DLQ before application even sees it?
2.)What is a likely format error coming from the DataPower ... The sender says they do not get a format error when sending to local queue on their end. Does data have to have CCSID of target platform, namely Linux??
3.) If message does not have to be read by application code before message format error is noticed by MQ, why would the message not be put on DLQ of intermediate qmgrs or even source qmgr??
4.) Is there a way to get more specific info on the MQRC_RFH_ERROR, like is it the CCSID, or Correlation ID, etc. ???
Looking at DLQ Header with MQExplorer at this time.
TIA _________________ "Truth is ... grasping the virtually unconditioned",
Bernard F. Lonergan S.J.
(from book titled "Insight" subtitled "A Study of Human Understanding") |
|
Back to top |
|
 |
fjb_saper |
Posted: Mon Sep 28, 2009 1:27 pm Post subject: Re: MQRC_RFH_ERROR |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
George Carey wrote: |
Problem:
Messages landing on DLQ with DLQ Header showing MQRC_RFH_ERROR
Scenario:
JMS messages being sent, XML SOAP payloads
Messages coming across a comm link from/source a DataPower box to a target queue on a Linux box.
Environments:
Source QMGR windows XP, MQ v 6.0.2.2+
_____Intermediate GW QMGRs (sending)Windows XP, MQ 6.0.2.3?
_________________________(receiving) Solaris MQ v 6.0.2.2
Target QMGR Linux MQv 7.0.0.2
Questions:
1.) Messages landing on target qmgr DLQ ... does the message have to be attempted to be read by target application to land on the target DLQ? Or is MQ placing it on DLQ before application even sees it? |
Quite possible. If the channel agent determines a badly formatted RFH2 it may put the message to the DLQ before even the application has a chance to read it.
George Carey wrote: |
2.)What is a likely format error coming from the DataPower ... The sender says they do not get a format error when sending to local queue on their end. Does data have to have CCSID of target platform, namely Linux?? |
The number of acceptable CCSIDs for the property value pairs on the RFH is quite limited. Go with 1208 or 1200 and you should be safe.
George Carey wrote: |
3.) If message does not have to be read by application code before message format error is noticed by MQ, why would the message not be put on DLQ of intermediate qmgrs or even source qmgr?? |
Good question. My attempt at an answer would be because the header that is being examined is the XMIT header while in transit and for speed and expediency purpose that is all that is needed to be looked at for routing.
George Carey wrote: |
4.) Is there a way to get more specific info on the MQRC_RFH_ERROR, like is it the CCSID, or Correlation ID, etc. ???
Looking at DLQ Header with MQExplorer at this time.
TIA |
You might want to use a more sophisticated tool like RFHUtil(c) (sp IH03) or mqmon (sp MO71) unless it allows you now to display the full message? (txt, xml, hex ...).
Have fun  _________________ MQ & Broker admin |
|
Back to top |
|
 |
George Carey |
Posted: Tue Sep 29, 2009 12:28 pm Post subject: DLQ info |
|
|
Knight
Joined: 29 Jan 2007 Posts: 500 Location: DC
|
Using the DLQ Header info from MQ Explorer
I see the following:
Original CCSID: 1208 (as you noted ... so should be good)
Original Encoding: 546 (don't know about this coming from win box going to linux box but I think is OK)
Original Format: MQHRF2 (I think this is good for JMS message SOAP message?)
Any suggestions on where and how to determine what the bad header structure error might be ?
I will see about getting other utilities (RFHUTIL) but not sure at this point how I would use it to determine the cause of error.
Sure would be nice if MQRC_RFH_ERROR gave indication of attribute in error (e.g. bad correlation id byte length ... or the like... perhaps it does but I don't know where !)
---------------------------------------------
Noted some other stange behavior on amqsbcg.
I could not read some messages with amqsbcg ... I got truncated message error !!! Message length was ~77K.
I did not think/know amqsbcg had a message limit on what it could read !!! Apparently I just never hit the limit !! _________________ "Truth is ... grasping the virtually unconditioned",
Bernard F. Lonergan S.J.
(from book titled "Insight" subtitled "A Study of Human Understanding") |
|
Back to top |
|
 |
fjb_saper |
Posted: Tue Sep 29, 2009 1:46 pm Post subject: Re: DLQ info |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
George Carey wrote: |
Using the DLQ Header info from MQ Explorer
I see the following:
Original CCSID: 1208 (as you noted ... so should be good)
Original Encoding: 546 (don't know about this coming from win box going to linux box but I think is OK)
Original Format: MQHRF2 (I think this is good for JMS message SOAP message?)
Any suggestions on where and how to determine what the bad header structure error might be ? |
This only tells you that the RFH header is in CCSID 1208.
It tells you nothing about the CCSID of the property/value pairs (this is on the RFH). You need to get a tool like RFHUtil to fully appreciate the complexity of the RFH. (support pack IH03 IIRC).
George Carey wrote: |
I will see about getting other utilities (RFHUTIL) but not sure at this point how I would use it to determine the cause of error.
Sure would be nice if MQRC_RFH_ERROR gave indication of attribute in error (e.g. bad correlation id byte length ... or the like... perhaps it does but I don't know where !)
---------------------------------------------
Noted some other strange behavior on amqsbcg.
I could not read some messages with amqsbcg ... I got truncated message error !!! Message length was ~77K.
I did not think/know amqsbcg had a message limit on what it could read !!! Apparently I just never hit the limit !! |
Like all samples you can copy and modify to remove the limitation.
Could be that the size of your RFH is sufficient to not allow any display of the message. IIRC the sample is limited to 100 bytes?
Enjoy  _________________ MQ & Broker admin |
|
Back to top |
|
 |
George Carey |
Posted: Wed Sep 30, 2009 8:11 am Post subject: amqsbcg |
|
|
Knight
Joined: 29 Jan 2007 Posts: 500 Location: DC
|
Quote: |
"IIRC the sample is limited to 100 bytes? " |
,
That is the limit with amqsget but NOT amqsbcg, as I say could read any size message off the queue I tried ... till now !!
Surprised is all.
Quote: |
This only tells you that the RFH header is in CCSID 1208.
It tells you nothing about the CCSID of the property/value pairs (this is on the RFH) |
,
I will have to look at a DLQ header format to see where DLQ header ends and original message headers begin. Not jumping out at me. _________________ "Truth is ... grasping the virtually unconditioned",
Bernard F. Lonergan S.J.
(from book titled "Insight" subtitled "A Study of Human Understanding")
Last edited by George Carey on Wed Sep 30, 2009 4:30 pm; edited 1 time in total |
|
Back to top |
|
 |
smdavies99 |
Posted: Wed Sep 30, 2009 8:19 am Post subject: |
|
|
 Jedi Council
Joined: 10 Feb 2003 Posts: 6076 Location: Somewhere over the Rainbow this side of Never-never land.
|
Quote: |
That is the limit with amqsget but amqsbcg, as I say could read any size message off the queue I tried ... till now !!
Surprised is all.
|
The 100 byte limit surprises many of us at first. But IBM have given you the sources of the sample apps so you can modify them and recompile them as you see fit. You could change the buffer size or make the read truncated messages(required reading the MQ Programming Manual)
However in this case, I'd really look into using RFHUTIL. It does show the relevant fields (optional or not) in the RFH2 Header. It is much easier to understand if there is some underlying issue with your message using this tool.
I'd go so far as to say that RFHUTIL is an essential tool for anyone using Message Broker (or WAS with WMQ As the JMS transport) _________________ WMQ User since 1999
MQSI/WBI/WMB/'Thingy' User since 2002
Linux user since 1995
Every time you reinvent the wheel the more square it gets (anon). If in doubt think and investigate before you ask silly questions. |
|
Back to top |
|
 |
George Carey |
Posted: Wed Sep 30, 2009 12:58 pm Post subject: ok mqhrf2 |
|
|
Knight
Joined: 29 Jan 2007 Posts: 500 Location: DC
|
Ok here is a snippet of DLQ (past the DLH info): This is starting with the CCSID value of 0333 = 819[3303 transposed] and Format = MQHRF2 , next would be PutAppltype, then PutApplName=amqrmppa, PutDate, Put time
Then the actual payload message starts which is an XML soap message.
This message lands on a queue OK with a V6 QMGR but when hopped to a v7 QMQR it gets sent to DLQ with "MQRC_RFH_ERROR" so where is the format error ??
Quote: |
...
00000070: 3303 0000 4D51 4852 4632 2020 0600 0000 '3...MQHRF2 ....'
00000080: 616D 7172 6D70 7061 2020 2020 2020 2020 'amqrmppa '
00000090: 2020 2020 2020 2020 2020 2020 3230 3039 ' 2009'
000000A0: 3039 3239 3135 3236 3437 3731 3C3F 786D '092915264771<?xm'
000000B0: 6C20 7665 7273 696F 6E3D 2231 2E30 2220 'l version="1.0" '
000000C0: 656E 636F 6469 6E67 3D22 5554 462D 3822 'encoding="UTF-8"'
000000D0: 3F3E 0A3C 736F 6170 3A45 6E76 656C 6F70 '?>.<soap:Envelop'
000000E0: 6520 786D 6C6E 733A 786C 696E 6B3D 2268 'e xmlns:xlink="h'
000000F0: 7474 703A 2F2F 7777 772E 7733 2E6F 7267 'ttp://www.w3.org'
00000100: 2F54 522F 786C 696E 6B22 2078 6D6C 6E73 '/TR/xlink" xmlns'
... |
_________________ "Truth is ... grasping the virtually unconditioned",
Bernard F. Lonergan S.J.
(from book titled "Insight" subtitled "A Study of Human Understanding") |
|
Back to top |
|
 |
George Carey |
Posted: Wed Sep 30, 2009 4:32 pm Post subject: Forgot NOT |
|
|
Knight
Joined: 29 Jan 2007 Posts: 500 Location: DC
|
sorry forgot the word NOT in my previous post !! I post facto edited it.
As in amqsbcg is NOT limited to 100 bytes. _________________ "Truth is ... grasping the virtually unconditioned",
Bernard F. Lonergan S.J.
(from book titled "Insight" subtitled "A Study of Human Understanding") |
|
Back to top |
|
 |
fjb_saper |
Posted: Wed Sep 30, 2009 7:14 pm Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
smdavies99 wrote: |
However in this case, I'd really look into using RFHUTIL. It does show the relevant fields (optional or not) in the RFH2 Header. It is much easier to understand if there is some underlying issue with your message using this tool.
I'd go so far as to say that RFHUTIL is an essential tool for anyone using Message Broker (or WAS with WMQ As the JMS transport) |
with smdavies99 and strongly suggest you download and use it. Oh the things I learned by looking at the multiple options and inspecting messages... with RFHUtil(c) .... A must have in the MQ Admin's arsenal when dealing with JMS headers...  _________________ MQ & Broker admin |
|
Back to top |
|
 |
rekarm01 |
Posted: Wed Sep 30, 2009 9:45 pm Post subject: Re: ok mqhrf2 |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 1415
|
George Carey wrote: |
Ok here is a snippet of DLQ (past the DLH info): This is starting with the CCSID value of 0333 = 819[3303 transposed] and Format = MQHRF2 , next would be PutAppltype, then PutApplName=amqrmppa, PutDate, Put time
Code: |
...
00000070: 3303 0000 4D51 4852 4632 2020 0600 0000 '3...MQHRF2 ....'
00000080: 616D 7172 6D70 7061 2020 2020 2020 2020 'amqrmppa '
00000090: 2020 2020 2020 2020 2020 2020 3230 3039 ' 2009'
000000A0: 3039 3239 3135 3236 3437 3731 '092915264771'
... |
|
That's not past the DLH info; that is still part of the DLH info. And the Format indicates that an MQRFH2 header should follow.
George Carey wrote: |
Then the actual payload message starts which is an XML soap message.
Code: |
...
000000A0: 3C3F 786D '<?xm'
000000B0: 6C20 7665 7273 696F 6E3D 2231 2E30 2220 'l version="1.0" '
000000C0: 656E 636F 6469 6E67 3D22 5554 462D 3822 'encoding="UTF-8"'
000000D0: 3F3E 0A3C 736F 6170 3A45 6E76 656C 6F70 '?>.<soap:Envelop'
000000E0: 6520 786D 6C6E 733A 786C 696E 6B3D 2268 'e xmlns:xlink="h'
000000F0: 7474 703A 2F2F 7777 772E 7733 2E6F 7267 'ttp://www.w3.org'
00000100: 2F54 522F 786C 696E 6B22 2078 6D6C 6E73 '/TR/xlink" xmlns'
... |
|
That doesn't look like an MQRFH2 header. Where's the MQRFH2 header?
George Carey wrote: |
This message lands on a queue OK with a V6 QMGR but when hopped to a v7 QMQR it gets sent to DLQ with "MQRC_RFH_ERROR" so where is the format error?? |
There's no MQRFH2 header. There ought to be one. That's an error.
The DLH should indicate the qmgr and queue name where the MQPUT failed; try to determine what the message looks like just before that point. |
|
Back to top |
|
 |
|