Author |
Message
|
mqlover |
Posted: Tue Aug 02, 2016 10:15 pm Post subject: MQRFH2 msg only going to the q |
|
|
Disciple
Joined: 25 Jul 2010 Posts: 176
|
Hi,
I am correlating with jms Front End.
I am populating the MQRFH2 header, but I see in the queue that only RFH header is going into the queue as message which I felt as weird and in the trace files I see the whole message tree like
Properties
MQMD
MQRFH2
XMLNSC
I donot find any errors in the user.log, how do I solve such message?
Pls help to suggest that what I could do to place the whole message with headers into the q.
Thanks in advance. |
|
Back to top |
|
 |
mqlover |
Posted: Wed Aug 03, 2016 2:34 am Post subject: |
|
|
Disciple
Joined: 25 Jul 2010 Posts: 176
|
I tried to remove the MQRFH2 header, and found that a message of "0" length is going to the queue.
I am unable to figure out what is going wrong, as I can see the proper tree being formed with
Properties
MQMD
XMLNSC
Any reason for the message going as "0" length |
|
Back to top |
|
 |
mqjeff |
Posted: Wed Aug 03, 2016 3:43 am Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
Did you adjust the MQMD to indicate that there isn't an MQRFH2 header after it? _________________ chmod -R ugo-wx / |
|
Back to top |
|
 |
adubya |
Posted: Wed Aug 03, 2016 4:35 am Post subject: |
|
|
Partisan
Joined: 25 Aug 2011 Posts: 377 Location: GU12, UK
|
You could post the trace node output here (in [code] tags). _________________ Independent Middleware Consultant
andy@knownentity.com |
|
Back to top |
|
 |
mqlover |
Posted: Wed Aug 03, 2016 6:11 am Post subject: |
|
|
Disciple
Joined: 25 Jul 2010 Posts: 176
|
Yeah,
Am providing in ESQL as
SET OutputRoot.MQMD.Format = MQFMT_RF_HEADER_2;
But, I commented the code to include MQRFH2 header, but still a "0" length message was going to the queue
Here is the trace for MQ just before putting into the queue
Code: |
Pattern:
( ['MQROOT' : 0x127341ad0]
(0x01000000:Name):Properties = ( ['MQPROPERTYPARSER' : 0x1274dcfd0]
(0x03000000:NameValue):MessageSet = NULL
(0x03000000:NameValue):MessageType = NULL
(0x03000000:NameValue):MessageFormat = NULL
(0x03000000:NameValue):Encoding = 273 (INTEGER)
(0x03000000:NameValue):CodedCharSetId = 819 (INTEGER)
(0x03000000:NameValue):Transactional = FALSE (BOOLEAN)
(0x03000000:NameValue):Persistence = FALSE (BOOLEAN)
(0x03000000:NameValue):CreationTime = GMTTIMESTAMP '2016-08-03 08:10:14.170' (GMTTIMESTAMP)
(0x03000000:NameValue):ExpirationTime = -1 (INTEGER)
(0x03000000:NameValue):Priority = 0 (INTEGER)
(0x03000000:NameValue):ReplyIdentifier = X'414d512053474553425431202020202057721fc023cccb64' (BLOB)
(0x03000000:NameValue):ReplyProtocol = 'MQ' (CHARACTER)
(0x03000000:NameValue):Topic = NULL
(0x03000000:NameValue):ContentType = NULL
(0x03000000:NameValue):IdentitySourceType = NULL
(0x03000000:NameValue):IdentitySourceToken = NULL
(0x03000000:NameValue):IdentitySourcePassword = NULL
(0x03000000:NameValue):IdentitySourceIssuedBy = NULL
(0x03000000:NameValue):IdentityMappedType = NULL
(0x03000000:NameValue):IdentityMappedToken = NULL
(0x03000000:NameValue):IdentityMappedPassword = NULL
(0x03000000:NameValue):IdentityMappedIssuedBy = NULL
)
(0x01000000:Name):MQMD = (
(0x03000000:NameValue):SourceQueue = TRUE (BOOLEAN)
(0x03000000:NameValue):Transactional = FALSE (BOOLEAN)
(0x03000000:NameValue):Encoding = 273 (INTEGER)
(0x03000000:NameValue):CodedCharSetId = 819 (INTEGER)
(0x03000000:NameValue):Format = 'MQHRF2 ' (CHARACTER)
(0x03000000:NameValue):Version = 2 (INTEGER)
(0x03000000:NameValue):Report = 0 (INTEGER)
(0x03000000:NameValue):MsgType = 8 (INTEGER)
(0x03000000:NameValue):Expiry = -1 (INTEGER)
(0x03000000:NameValue):Feedback = 0 (INTEGER)
(0x03000000:NameValue):Priority = 0 (INTEGER)
(0x03000000:NameValue):Persistence = 0 (INTEGER)
(0x03000000:NameValue):MsgId = X'000000000000000000000000000000000000000000000000' (BLOB)
(0x03000000:NameValue):CorrelId = X'414d512053474553425431202020202057721fc023cccb64' (BLOB)
(0x03000000:NameValue):BackoutCount = 0 (INTEGER)
(0x03000000:NameValue):ReplyToQ = ' ' (CHARACTER)
(0x03000000:NameValue):ReplyToQMgr = 'BROKERQM ' (CHARACTER)
(0x03000000:NameValue):UserIdentifier = ' ' (CHARACTER)
(0x03000000:NameValue):AccountingToken = X'0000000000000000000000000000000000000000000000000000000000000000' (BLOB)
(0x03000000:NameValue):ApplIdentityData = ' ' (CHARACTER)
(0x03000000:NameValue):PutApplType = -1 (INTEGER)
(0x03000000:NameValue):PutApplName = ' ' (CHARACTER)
(0x03000000:NameValue):PutDate = DATE '2016-08-03' (DATE)
(0x03000000:NameValue):PutTime = GMTTIME '08:10:14.170' (GMTTIME)
(0x03000000:NameValue):ApplOriginData = ' ' (CHARACTER)
(0x03000000:NameValue):GroupId = X'000000000000000000000000000000000000000000000000' (BLOB)
(0x03000000:NameValue):MsgSeqNumber = 1 (INTEGER)
(0x03000000:NameValue):Offset = 0 (INTEGER)
(0x03000000:NameValue):MsgFlags = 0 (INTEGER)
(0x03000000:NameValue):OriginalLength = -1 (INTEGER)
)
(0x01000000:Name):XMLNSC = (
}
|
|
|
Back to top |
|
 |
Vitor |
Posted: Wed Aug 03, 2016 6:20 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
mqlover wrote: |
I am unable to figure out what is going wrong, as I can see the proper tree being formed with
Properties
MQMD
XMLNSC |
Beg to differ on that trace showing a proper tree.
mqlover wrote: |
Any reason for the message going as "0" length |
Aside from the MQMD still indicating an RFH2 when there isn't one, the XMLNSC domain in the trace has no content. So I would expect that to serialize as a 0 length message; 0 is what you get when you have no content. _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
mqlover |
Posted: Wed Aug 03, 2016 6:23 am Post subject: |
|
|
Disciple
Joined: 25 Jul 2010 Posts: 176
|
Sorry the XMLSNSC has fields inside, just that I have not captured it here.
So its not an empty message. |
|
Back to top |
|
 |
Vitor |
Posted: Wed Aug 03, 2016 6:28 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
mqlover wrote: |
Sorry the XMLSNSC has fields inside, just that I have not captured it here.
So its not an empty message. |
So if you take the flow which generates that trace & alter the code so that the MQMD Format is MQFT_STRING, the output that hits the queue is an MQMD with a 0 length message?
Can you repeat the trace with the MQMD details, the user trace of the MQOutput node actually serializing the tree and an amqsbcg dump of the result on the queue? Then post that little lot here for examination & dissection. _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
mqlover |
Posted: Wed Aug 03, 2016 7:13 am Post subject: |
|
|
Disciple
Joined: 25 Jul 2010 Posts: 176
|
HI,
I just realized that after XMLNSC there is some more tree getting printed
Code: |
Pattern:
( ['MQROOT' : 0x12736fc70]
(0x01000000:Name):Properties = ( ['MQPROPERTYPARSER' : 0x1274a00b0]
(0x03000000:NameValue):MessageSet = '' (CHARACTER)
(0x03000000:NameValue):MessageType = '' (CHARACTER)
(0x03000000:NameValue):MessageFormat = '' (CHARACTER)
(0x03000000:NameValue):Encoding = 546 (INTEGER)
(0x03000000:NameValue):CodedCharSetId = 437 (INTEGER)
(0x03000000:NameValue):Transactional = FALSE (BOOLEAN)
(0x03000000:NameValue):Persistence = TRUE (BOOLEAN)
(0x03000000:NameValue):CreationTime = GMTTIMESTAMP '2016-08-03 15:06:22.078406' (GMTTIMESTAMP)
(0x03000000:NameValue):ExpirationTime = -1 (INTEGER)
(0x03000000:NameValue):Priority = 0 (INTEGER)
(0x03000000:NameValue):ReplyIdentifier = X'414d512053474553425431202020202057721fc023d76055' (BLOB)
(0x03000000:NameValue):ReplyProtocol = 'MQ' (CHARACTER)
(0x03000000:NameValue):Topic = NULL
(0x03000000:NameValue):Topic = NULL
(0x03000000:NameValue):ContentType = '' (CHARACTER)
(0x03000000:NameValue):IdentitySourceType = '' (CHARACTER)
(0x03000000:NameValue):IdentitySourceToken = '' (CHARACTER)
(0x03000000:NameValue):IdentitySourcePassword = '' (CHARACTER)
(0x03000000:NameValue):IdentitySourceIssuedBy = '' (CHARACTER)
(0x03000000:NameValue):IdentityMappedType = '' (CHARACTER)
(0x03000000:NameValue):IdentityMappedToken = '' (CHARACTER)
(0x03000000:NameValue):IdentityMappedPassword = '' (CHARACTER)
(0x03000000:NameValue):IdentityMappedIssuedBy = '' (CHARACTER)
)
(0x01000000:Name):MQMD = (
(0x03000000:NameValue):SourceQueue = true (CHARACTER)
(0x03000000:NameValue):Transactional = FALSE (BOOLEAN)
(0x03000000:NameValue):Encoding = 546 (INTEGER)
(0x03000000:NameValue):CodedCharSetId = 437 (INTEGER)
(0x03000000:NameValue):Format = 'MQSTR ' (CHARACTER)
(0x03000000:NameValue):Version = 2 (INTEGER)
(0x03000000:NameValue):Report = 0 (INTEGER)
(0x03000000:NameValue):MsgType = 8 (INTEGER)
(0x03000000:NameValue):Expiry = -1 (INTEGER)
(0x03000000:NameValue):Feedback = 0 (INTEGER)
(0x03000000:NameValue):Priority = 0 (INTEGER)
(0x03000000:NameValue):Persistence = 1 (INTEGER)
(0x03000000:NameValue):MsgId = X'414d512053474553425431202020202057721fc023d76055' (BLOB)
(0x03000000:NameValue):CorrelId = X'414d512053474553425431202020202057721fc023d76055' (BLOB)
(0x03000000:NameValue):BackoutCount = 0 (INTEGER)
(0x03000000:NameValue):ReplyToQ = ' ' (CHARACTER)
(0x03000000:NameValue):ReplyToQMgr = 'BROKERQM ' (CHARACTER)
(0x03000000:NameValue):UserIdentifier = ' ' (CHARACTER)
(0x03000000:NameValue):AccountingToken = X'0000000000000000000000000000000000000000000000000000000000000000' (BLOB)
(0x03000000:NameValue):ApplIdentityData = ' ' (CHARACTER)
(0x03000000:NameValue):PutApplType = 0 (INTEGER)
(0x03000000:NameValue):PutApplName = ' ' (CHARACTER)
(0x03000000:NameValue):PutDate = ' ' (CHARACTER)
(0x03000000:NameValue):PutTime = GMTTIME '00:00:00' (GMTTIME)
(0x03000000:NameValue):ApplOriginData = ' ' (CHARACTER)
(0x03000000:NameValue):GroupId = X'000000000000000000000000000000000000000000000000' (BLOB)
(0x03000000:NameValue):MsgSeqNumber = 1 (INTEGER)
(0x03000000:NameValue):Offset = 0 (INTEGER)
(0x03000000:NameValue):MsgFlags = 0 (INTEGER)
(0x03000000:NameValue):OriginalLength = -1 (INTEGER)
)
(0x01000000:Name):XMLNSC = (
(0x01000000:Name):IFX = (
(0x01000000:Name):IFX_MsgRsHdr = (
(0x03000000:NameValue):IFX_RqUID = '' (CHARACTER)
(0x03000000:NameValue):AsyncRqUID = 'ca3cb344-88c6-4c47-871f-38b25ed55deb' (CHARACTER)
(0x01000000:Name ):IFX_Status = (
(0x03000000:NameValue):StatusCode = '0' (CHARACTER)
(0x03000000:NameValue):StatusDesc = 'SUCCESS' (CHARACTER)
(0x01000000:Name ):AdditionalStatus = (
(0x03000000:NameValue):StatusCode = '0' (CHARACTER)
(0x03000000:NameValue):StatusDesc = 'SUCCESS' (CHARACTER)
(0x03000000:NameValue):MBB_TransactionLeg = '1' (CHARACTER)
(0x03000000:NameValue):MBB_TransactionCodeDesc = '' (CHARACTER)
(0x03000000:NameValue):MBB_TransactionCountry = 'SG' (CHARACTER)
(0x03000000:NameValue):MBB_SeqNo = '' (CHARACTER)
)
)
(0x01000000:Name ):IFX_RecCtrlOut = (
(0x03000000:NameValue):MatchedRecCount = '' (CHARACTER)
(0x03000000:NameValue):Token = '' (CHARACTER)
)
(0x01000000:Name ):IFX_SvcIdent =
(0x01000000:Name ):IFX_ContextRqHdr = (
(0x03000000:NameValue):MBB_ServerDt = NULL
)
(0x03000000:NameValue):MBB_Variant = NULL
)
(0x01000000:Name):AcctInqRs = (
(0x01000000:Name):MBB_Scan_Response = (
(0x03000000:NameValue):ViolationCount = '0' (CHARACTER)
(0x03000000:NameValue):AcceptCount = '0' (CHARACTER)
(0x03000000:NameValue):ExternalCount = '0' (CHARACTER)
)
)
)
)
)
( ['MQROOT' : 0x12736fc70]
(0x01000000:Name):IFX = (
(0x01000000:Name):MsgRsHdr = (
(0x03000000:NameValue):RqUID = '' (CHARACTER)
(0x03000000:NameValue):AsyncRqUID = 'ca3cb344-88c6-4c47-871f-38b25ed55deb' (CHARACTER)
(0x01000000:Name ):IFX_Status = (
(0x03000000:NameValue):StatusCode = '0' (CHARACTER)
(0x03000000:NameValue):StatusDesc = 'SUCCESS' (CHARACTER)
(0x01000000:Name ):AdditionalStatus = (
(0x03000000:NameValue):StatusCode = '0' (CHARACTER)
(0x03000000:NameValue):StatusDesc = 'SUCCESS' (CHARACTER)
(0x03000000:NameValue):MBB_TransactionLeg = '1' (CHARACTER)
(0x03000000:NameValue):MBB_TransactionCodeDesc = '' (CHARACTER)
(0x03000000:NameValue):MBB_TransactionCountry = 'SG' (CHARACTER)
(0x03000000:NameValue):MBB_SeqNo = '' (CHARACTER)
)
)
(0x01000000:Name ):IFX_RecCtrlOut = (
(0x03000000:NameValue):MatchedRecCount = '' (CHARACTER)
(0x03000000:NameValue):Token = '' (CHARACTER)
)
(0x01000000:Name ):IFX_SvcIdent =
(0x01000000:Name ):IFX_ContextRqHdr = (
(0x03000000:NameValue):MBB_ServerDt = NULL
)
(0x03000000:NameValue):MBB_Variant = NULL
)
(0x01000000:Name):AcctInqRs = (
(0x01000000:Name):MBB_Scan_Response = (
(0x03000000:NameValue):ViolationCount = '0' (CHARACTER)
(0x03000000:NameValue):AcceptCount = '0' (CHARACTER)
(0x03000000:NameValue):ExternalCount = '0' (CHARACTER)
)
)
)
)
|
How do I get rid of this extra xml kinda structure after XMLNSC. |
|
Back to top |
|
 |
Vitor |
Posted: Wed Aug 03, 2016 7:38 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
mqlover wrote: |
How do I get rid of this extra xml kinda structure after XMLNSC. |
In order of my personal preference:
- Don't add it in the first place, or more likely don't accidentally copy it from the InputRoot earlier in the flow (an unfortunate use of CopyEntireMessage for example).
- Explicitly remove it
Code: |
SET OutputRoot.IFX=NULL |
or similar.
- Explicitly put the XMLNSC domain as the last child of Root.
But the MQOutput node will serialize only the last child of Root as the message body. There's no domain associated with that structure so it serializes as 0, so that additional data is the cause of your woes. _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
mqlover |
Posted: Wed Aug 03, 2016 3:30 pm Post subject: |
|
|
Disciple
Joined: 25 Jul 2010 Posts: 176
|
Thanks very much. Lemme try it this way. Thanks for your help |
|
Back to top |
|
 |
mqlover |
Posted: Thu Aug 04, 2016 7:16 pm Post subject: |
|
|
Disciple
Joined: 25 Jul 2010 Posts: 176
|
HI,
I tried with CREATE LASTCHILD FOR OutputRoot DOMAIN('XMLNSC') its working.
Now I added a MQRFH2 portion of the code as below
Code: |
CREATE NEXTSIBLING of OutputRoot.MQMD DOMAIN 'MQRFH2' NAME 'MQRFH2';
-- SET OutputRoot.MQMD.Format = MQFMT_RF_HEADER_2;
SET OutputRoot.MQRFH2.(MQRFH2.Field)StrucId = MQRFH_STRUC_ID;
SET OutputRoot.MQRFH2.(MQRFH2.Field)Version = 2;
SET OutputRoot.MQRFH2.(MQRFH2.Field)CodedCharSetId = 1208;
SET OutputRoot.MQRFH2.(MQRFH2.Field)Format = MQFMT_STRING;
SET OutputRoot.MQRFH2.(MQRFH2.Field)NameValueCCSID = 1208;
SET OutputRoot.MQRFH2.mcd.Msd = 'xmlnsc';
SET OutputRoot.MQRFH2.mcd.Fmt = MQFMT_STRING;
SET OutputRoot.MQRFH2.jms.Dst = backEnd.MQRFH2.jms.Dst;
SET OutputRoot.MQRFH2.jms.Rto = 'OuptutQ';
SET OutputRoot.MQRFH2.jms.Tms = backEnd.MQRFH2.jms.Tms;
SET OutputRoot.MQRFH2.jms.Dlv = backEnd.MQRFH2.jms.Dlv;
if OutputRoot.MQRFH2.jms.Cid IS NULL THEN
SET OutputRoot.MQRFH2.jms.Cid = backEnd.MQMD.CorrelId;
end if;
|
But in the queue I see that the message goes as
Code: |
RFH Header <IFX>..........</IFX>
|
Why is this happening?Am not understanding it? |
|
Back to top |
|
 |
smdavies99 |
Posted: Thu Aug 04, 2016 10:46 pm Post subject: |
|
|
 Jedi Council
Joined: 10 Feb 2003 Posts: 6076 Location: Somewhere over the Rainbow this side of Never-never land.
|
As with the MQMD there are some fields in the RFH2 Header that are binary.
Why not use a tool designed for just this purpose like RFHUTIL? Part of the IH03 support pack.
also, a good test is to have a simple Message flow that is just an MQInput Node followed by a trace node set to output to a file with a trace pattern of ${Root}
Then feed the message into the flow. If it can be read by the flow you will see all the contents in the trace file. _________________ 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 |
|
 |
|