ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » MQRFH2 msg only going to the q

Post new topic  Reply to topic
 MQRFH2 msg only going to the q « View previous topic :: View next topic » 
Author Message
mqlover
PostPosted: Tue Aug 02, 2016 10:15 pm    Post subject: MQRFH2 msg only going to the q Reply with quote

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
View user's profile Send private message
mqlover
PostPosted: Wed Aug 03, 2016 2:34 am    Post subject: Reply with quote

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
View user's profile Send private message
mqjeff
PostPosted: Wed Aug 03, 2016 3:43 am    Post subject: Reply with quote

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
View user's profile Send private message
adubya
PostPosted: Wed Aug 03, 2016 4:35 am    Post subject: Reply with quote

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
View user's profile Send private message Send e-mail
mqlover
PostPosted: Wed Aug 03, 2016 6:11 am    Post subject: Reply with quote

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
View user's profile Send private message
Vitor
PostPosted: Wed Aug 03, 2016 6:20 am    Post subject: Reply with quote

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
View user's profile Send private message
mqlover
PostPosted: Wed Aug 03, 2016 6:23 am    Post subject: Reply with quote

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
View user's profile Send private message
Vitor
PostPosted: Wed Aug 03, 2016 6:28 am    Post subject: Reply with quote

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
View user's profile Send private message
mqlover
PostPosted: Wed Aug 03, 2016 7:13 am    Post subject: Reply with quote

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
View user's profile Send private message
Vitor
PostPosted: Wed Aug 03, 2016 7:38 am    Post subject: Reply with quote

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
View user's profile Send private message
mqlover
PostPosted: Wed Aug 03, 2016 3:30 pm    Post subject: Reply with quote

Disciple

Joined: 25 Jul 2010
Posts: 176

Thanks very much. Lemme try it this way. Thanks for your help
Back to top
View user's profile Send private message
mqlover
PostPosted: Thu Aug 04, 2016 7:16 pm    Post subject: Reply with quote

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
View user's profile Send private message
smdavies99
PostPosted: Thu Aug 04, 2016 10:46 pm    Post subject: Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » MQRFH2 msg only going to the q
Jump to:  



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
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.