|
RSS Feed - WebSphere MQ Support
|
RSS Feed - Message Broker Support
|
 |
|
WMB 6.0.0.3 \ Setting CorrelId Prob [a singularity bug] |
« View previous topic :: View next topic » |
Author |
Message
|
hopsala |
Posted: Mon Aug 04, 2008 3:27 am Post subject: WMB 6.0.0.3 \ Setting CorrelId Prob [a singularity bug] |
|
|
 Guardian
Joined: 24 Sep 2004 Posts: 960
|
Hi,
I have a flow, which begins with HTTPInput (so I don't have a ready-made MQMD, I need to create one) and i'm trying to get a message by CorrelId. My compute node code looks like this:
Code: |
CREATE NEXTSIBLING OF OutputRoot.Properties DOMAIN 'MQMD';
SET OutputRoot.MQMD.CorrelId = Environment.SavedWrittenMQDestination.msgId; |
(SavedWrittenMQDestination was previously set after sending a request message with "new msgid" flag.)
Here's the deal:
1. Before the compute node, in debug mode, I see only Properties and XML under the message tree.
2. after executing the last line, I see an "MQMD" tree with "CorrelId" set to the correct value (i.e 3753953fd3...). There are no other children under MQMD.
3. After the compute node - and I mean immediately after, no code is performed between the SET CorrelId and this point - I see an MQMD with many children (msgid, expiry etc) but the CorrelId is set to zero (0000..) !
It seems to me that WMB initializes the MQMD fields I had not set, and for some reason overwrites my correlid value... ??
Now, this is either a bug or a very odd feature (I'm thinking a bug). Has anyone encountered this? Is this known behavior?
Last edited by hopsala on Sun Aug 10, 2008 7:42 am; edited 1 time in total |
|
Back to top |
|
 |
AkankshA |
Posted: Mon Aug 04, 2008 4:10 am Post subject: |
|
|
 Grand Master
Joined: 12 Jan 2006 Posts: 1494 Location: Singapore
|
I generally set these properties while craeting MQMD header afresh
CREATE NEXTSIBLING OF OutputRoot.Properties DOMAIN 'MQMD';
SET OutputRoot.MQMD.StrucId = MQMD_STRUC_ID;
SET OutputRoot.MQMD.Version = MQMD_CURRENT_VERSION;
SET OutputRoot.MQMD.MsgType = MQMT_DATAGRAM;
SET OutputRoot.MQMD.Format = MQFMT_RF_HEADER_2 ; _________________ Cheers |
|
Back to top |
|
 |
mqjeff |
Posted: Mon Aug 04, 2008 5:00 am Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
In MB 6.0, OutputRoot.Properties takes precedence over OutputRoot.MQMD fields, where fields map to each other.
In MB6.1, on the other hand, it depends more on which ones you change. |
|
Back to top |
|
 |
Bill.Matthews |
Posted: Mon Aug 04, 2008 12:54 pm Post subject: |
|
|
 Master
Joined: 23 Sep 2003 Posts: 232 Location: IBM (Retired)
|
Take the simple route and set the value in both places (MQMD and Properties).
You could also do some reading of the docs and find where this is explained. I'll leave that to you.
My personal preference when creating an MQMD is to set the StrucId, the put date & time and for testing purposes set an putting application name that reflects that it was created by a message flow. All of the remainder of the fields will be created for you - as specified in the precedence statements in the help. _________________ Bill Matthews |
|
Back to top |
|
 |
p.cradwick |
Posted: Mon Aug 04, 2008 5:36 pm Post subject: |
|
|
Acolyte
Joined: 16 May 2001 Posts: 56
|
I found the bare minimum for MQMD is:
SET mqmdRef.StrucId = MQMD_STRUC_ID;
SET mqmdRef.Version = MQMD_CURRENT_VERSION;
SET mqmdRef.MsgType = MQMT_DATAGRAM; |
|
Back to top |
|
 |
hopsala |
Posted: Tue Aug 05, 2008 4:01 am Post subject: |
|
|
 Guardian
Joined: 24 Sep 2004 Posts: 960
|
mqjeff wrote: |
In MB 6.0, OutputRoot.Properties takes precedence over OutputRoot.MQMD fields, where fields map to each other. |
Bill.Matthews wrote: |
Take the simple route and set the value in both places (MQMD and Properties). |
I don't quite follow what you're talking about here - AFAIK msgId is not a field in Properties, and has relevance only in MQMD.. no?
I have found a way to work around this - I have two compute nodes, one after the other, the first runs the code mentioned above, the second sets the CorrelId. After the first I have an MQMD tree with CorrelId=0000.., after the second the CorrelId is set to the correct value.
Obviously, this is not a likely candidate for "most aesthetic workaround of the year", and I am still highly doubtul that all this is expected WMB behavior. Does anyone have a cleaner solution, or an actual purpose-oriented explanation as to why should WMB delete field valued after they had been explicitly assigned? |
|
Back to top |
|
 |
hopsala |
Posted: Sun Aug 10, 2008 7:41 am Post subject: |
|
|
 Guardian
Joined: 24 Sep 2004 Posts: 960
|
Well, I've tried running the same flow on two other brokers and the said problem does not occur - that is, the CorrelId is set properly. So apparently it's just a good ol' bug, and it's time to reinstall my broker..
Thanks for all who helped. |
|
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
|
|
|
|