Author |
Message
|
guyos |
Posted: Wed Sep 12, 2007 5:32 am Post subject: Handling MQMD.Format for Pub/Sub with Publication Node |
|
|
 Novice
Joined: 04 Jan 2006 Posts: 24
|
I have problems with setting MQMD.Format in a compute node.
I set it to MQFMT_RF_HEADER_2 from MQFMT_STRING but the the value is blank following the compute node.
Here is the scenario...
MQInput (XML message domain) -> Compute -> Publication
In the compute node I add a MQRFH2 header with psc elements and change the MQMD.Format
Code: |
CALL CopyEntireMessage();
DECLARE eventRef REFERENCE TO InputBody.(XML.Element)[1];
SET OutputRoot.MQMD.Format=MQFMT_RF_HEADER_2;
SET OutputRoot.MQMD.MsgType = 1;
CREATE PREVIOUSSIBLING OF OutputRoot.XML TYPE Name NAME 'MQRFH2';
SET OutputRoot.MQRFH2.(MQRFH2.Field)Version = 2;
SET OutputRoot.MQRFH2.(MQRFH2.Field)Format = MQFMT_STRING;
CREATE LASTCHILD OF OutputRoot.MQRFH2 TYPE Name NAME 'psc';
CREATE LASTCHILD OF OutputRoot.MQRFH2.psc TYPE Name NAME 'Command';
CREATE LASTCHILD OF OutputRoot.MQRFH2.psc TYPE Name NAME 'Topic';
SET OutputRoot.MQRFH2.psc.Command = 'Publish';
SET OutputRoot.MQRFH2.psc.Topic = FIELDNAME(eventRef);
|
The problem is that (using a trace node after the compute node) the MQMD.Format element is missing...
(
(0x01000000):Properties = (
(0x03000000):MessageSet = ''
(0x03000000):MessageType = ''
(0x03000000):MessageFormat = ''
(0x03000000):Encoding = 546
(0x03000000):CodedCharSetId = 437
(0x03000000):Transactional = TRUE
(0x03000000):Persistence = FALSE
(0x03000000):CreationTime = GMTTIMESTAMP '2007-09-12 13:30:40.150'
(0x03000000):ExpirationTime = -1
(0x03000000):Priority = 0
(0x03000000):ReplyIdentifier = X'000000000000000000000000000000000000000000000000'
(0x03000000):ReplyProtocol = 'MQ'
(0x03000000):Topic = NULL
(0x03000000):ContentType = ''
)
(0x01000000):MQMD = (
(0x03000000):SourceQueue = 'IN'
(0x03000000):Transactional = TRUE
(0x03000000):Encoding = 546
(0x03000000):CodedCharSetId = 437
(0x03000000):Version = 2
(0x03000000):Report = 0
(0x03000000):MsgType = 1
(0x03000000):Expiry = -1
(0x03000000):Feedback = 0
(0x03000000):Priority = 0
(0x03000000):Persistence = 0
(0x03000000):MsgId = X'414d51204c434c2e42524f4b45522e5127a0e546200a1714'
(0x03000000):CorrelId = X'000000000000000000000000000000000000000000000000'
(0x03000000):BackoutCount = 0
(0x03000000):ReplyToQ = ' '
(0x03000000):ReplyToQMgr = 'LCL.BROKER.QM '
(0x03000000):UserIdentifier = 'losh '
(0x03000000):AccountingToken = X'1601051500000007e53b2b2e43ac4043170a32eb03000000000000000000000b'
(0x03000000):ApplIdentityData = ' '
(0x03000000):PutApplType = 11
(0x03000000):PutApplName = 'd:\q\windows\q.exe '
(0x03000000):PutDate = DATE '2007-09-12'
(0x03000000):PutTime = GMTTIME '13:30:40.150'
(0x03000000):ApplOriginData = ' '
(0x03000000):GroupId = X'000000000000000000000000000000000000000000000000'
(0x03000000):MsgSeqNumber = 1
(0x03000000):Offset = 0
(0x03000000):MsgFlags = 0
(0x03000000):OriginalLength = -1
)
(0x01000000):MQRFH2 = (
(0x03000000):Version = 2
(0x03000000):Format = 'MQSTR '
(0x01000000):psc = (
(0x01000000):Command = (
(0x02000000): = 'Publish'
)
(0x01000000):Topic = (
(0x02000000): = 'DayStart'
)
)
)
(0x01000010):XML = (
(0x01000000):DayStart = (
(0x01000000):date = (
(0x02000000): = '01/09/2007-08:00:00'
)
)
)
)
What could have cleared this element? |
|
Back to top |
|
 |
fjb_saper |
Posted: Sun Sep 23, 2007 8:13 pm Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
Did you ever issue
SET OutputRoot.MQMD.Format=NULL; ?? _________________ MQ & Broker admin |
|
Back to top |
|
 |
guyos |
Posted: Wed Sep 26, 2007 5:56 am Post subject: |
|
|
 Novice
Joined: 04 Jan 2006 Posts: 24
|
I have not issued such a statement - should I? |
|
Back to top |
|
 |
fjb_saper |
Posted: Wed Sep 26, 2007 11:49 am Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
guyos wrote: |
I have not issued such a statement - should I? |
No but the Format field is suspiciously absent from your MQMD as shown... _________________ MQ & Broker admin |
|
Back to top |
|
 |
guyos |
Posted: Thu Sep 27, 2007 7:12 am Post subject: |
|
|
 Novice
Joined: 04 Jan 2006 Posts: 24
|
All my ESQL is in the first note.
I am running the flow in debug as well. I see that the Format is set properly in the Compute Node when step line by line.
Then when the code reaches the return and the flow steps out of the compute node I can look at the message and there is no Format element in the message under the MQMD header. |
|
Back to top |
|
 |
fjb_saper |
Posted: Thu Sep 27, 2007 2:37 pm Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
Open a PMR _________________ MQ & Broker admin |
|
Back to top |
|
 |
guyos |
Posted: Fri Sep 28, 2007 7:27 am Post subject: Solution |
|
|
 Novice
Joined: 04 Jan 2006 Posts: 24
|
The solution is to create the MQRFH2 element as DOMAIN...
Code: |
IF InputRoot.MQRFH2 IS NULL THEN
CREATE NEXTSIBLING OF OutputRoot.MQMD DOMAIN 'MQRFH2';
END IF;
|
|
|
Back to top |
|
 |
jefflowrey |
Posted: Fri Sep 28, 2007 7:34 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
Glad to know that worked!  _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
guyos |
Posted: Fri Sep 28, 2007 7:36 am Post subject: |
|
|
 Novice
Joined: 04 Jan 2006 Posts: 24
|
Solution proposed by Jeff - thanks!  |
|
Back to top |
|
 |
|