Author |
Message
|
mq_developer |
Posted: Mon Jun 24, 2002 10:23 pm Post subject: Wont the Destination List get copied |
|
|
Voyager
Joined: 18 Feb 2002 Posts: 82
|
Board,
Its a simple question regarding ESQL ..
if you say SET OutputRoot = InputRoot ( Copy entire message option is selected on compute node) wouldnt the DestinationList be copied to output message?
I have nodes like this
MQINPUT ---> Compute1 ----> Compute2 -----> MQOutput.
Here Compute1 forms the Destination list , in Compute2 all i have is Copy entire message , but when the message comes to MQOutput my message doesnt have Destination List built into it unless otherwise in Compute2 i specify
SET OutputDestinationList = InputDestinationList;
Why so and Any help is appreciated.
--Ram[/code] |
|
Back to top |
|
 |
Segs |
Posted: Mon Jun 24, 2002 11:12 pm Post subject: |
|
|
Voyager
Joined: 04 Oct 2001 Posts: 78 Location: Zurich Financial Services
|
On the advanced tab of the last compute node, have you set the Compute Node to "Destination and Message"? |
|
Back to top |
|
 |
mq_developer |
Posted: Tue Jun 25, 2002 6:07 am Post subject: |
|
|
Voyager
Joined: 18 Feb 2002 Posts: 82
|
Hai ,
Even after specifying Destination & Message in all the compute nodes, in the one which generated Destination List and the following , its still not working unless otherwise you explicitly code
SET OutputDestinationList = InputDestinationList; in following Compute Nodes.
Correct me if i am wrong |
|
Back to top |
|
 |
TorpedoSTu |
Posted: Tue Jun 25, 2002 6:16 am Post subject: |
|
|
Acolyte
Joined: 14 Nov 2001 Posts: 73
|
Hiya,
WMQI works like this.
To pass the DestinationList from node to node you have to ...
Set the advanced tab dropdown to 'Destination and Message" or "All"
Set OutputDestinationList = InputDestinationList; in your message flow.
Daft but true !
Regs
Stuart |
|
Back to top |
|
 |
devans |
Posted: Tue Jun 25, 2002 7:02 am Post subject: |
|
|
Apprentice
Joined: 18 Mar 2002 Posts: 43
|
Hmmn. True-ish.
There are three "trees" which flow between nodes - the Message, the Destination List (renamed to Local Environment in v2.1), and the Exception list. A Compute node has access to six trees - Input and Output versions of the three mentioned earlier. The Compute node can only propagate three of its six trees on, and it chooses whether to send the Input or Output versions depending on the setting in the Advanced tab. If the selection you make mentions one of the trees, then the Output version of it will be propagated. If it doesn't, then the Input version will be propagated.
So, the default setting of "Message" would send out the Output Message (OutputRoot), the Input DL, and the Input EL. Setting it to "Destination and Message" would send the Output Message, the Output DL, and the Input EL.
In your flow, I'd expect Compute1 to be set to "xx & Destination" because you are modifying the (Output) DestinationList. In Compute2, I'd expect the advanced attribute NOT to say "Destination" because you do not want to change the DL, you just want to pass on what you already had (the Input DL).
What this means, is that you can pass the DL through the flow without having to do an explicit "SET ODL=IDL;" each time. |
|
Back to top |
|
 |
kirani |
Posted: Tue Jun 25, 2002 7:09 am Post subject: |
|
|
Jedi Knight
Joined: 05 Sep 2001 Posts: 3779 Location: Torrance, CA, USA
|
Ram,
In your first compute node, where you are creating DestinationList, set compute mode to Message and DestinationList in Advanced Tab.
In your second compute node, you just say "Copy Entire Message" and set your compute mode to Message only, your DestinationList should get copied automatically. If you are planning to modify DestinationList in second compute node, then only specify both (Message and DestinationList) in compute mode. _________________ Kiran
IBM Cert. Solution Designer & System Administrator - WBIMB V5
IBM Cert. Solutions Expert - WMQI
IBM Cert. Specialist - WMQI, MQSeries
IBM Cert. Developer - MQSeries
|
|
Back to top |
|
 |
Yash |
Posted: Tue Nov 19, 2002 5:12 am Post subject: |
|
|
Novice
Joined: 26 Sep 2002 Posts: 24
|
Hai Kiran,
I am trying to send two output messages from single input message.
I set the Advance tab as LocalEnvironment and Message in compute node.
I am using PROPAGATE function to do this.
I am able to get the first message out on to the specified queue.
And the second message is processed and trying to send to Out terminal and the second message is rolled back to input node.
I am geting the following error . Can you please help with this.
'PROPAGATE;'.
No user action required.
2002-11-18 18:42:03.132395 2356 UserTrace BIP4124I: Message propagated to 'out' terminal from compute node 'HCM.ATOAPS_COMCNTRL_ERXD_0.0.Compute1'.
The compute node 'HCM.ATOAPS_COMCNTRL_ERXD_0.0.Compute1' has generated a message and is propagating it to any nodes connected to its 'out' terminal.
No user action required.
2002-11-18 18:42:03.136498 2356 Error BIP2628E: Exception condition detected on input node 'HCM.ATOAPS_COMCNTRL_ERXD_0.0.MQInput1'.
The input node 'HCM.ATOAPS_COMCNTRL_ERXD_0.0.MQInput1' detected an error whilst processing a message. The message flow has been rolled-back and, if the message was being processed in a unit of work, it will remain on the input queue to be processed again. Following messages will indicate the cause of this exception.
Check the error messages which follow to determine why the exception was generated, and take action as described by those messages.
2002-11-18 18:42:03.136641 2356 ImbComputeNode::evaluate
2002-11-18 18:42:03.136657 2356 ImbMqOutputNode::evaluate
2002-11-18 18:42:03.136670 2356 ImbMqOutputNode::evaluate
And I am using the following statements to send it different queues
SET OutputLocalEnvironment.Destination.MQ.DestinationData[1].queueName = 'NT16824ERROR_QUEUE';
PROPAGATE;
RETURN FALSE;
Thanks, _________________ Yash |
|
Back to top |
|
 |
kwelch |
Posted: Tue Nov 19, 2002 12:30 pm Post subject: |
|
|
 Master
Joined: 16 May 2001 Posts: 255
|
Hi Yash,
Try this:
SET OutputLocalEnvironment.Destination.MQDestinationList.DestinationData[1].queueName = 'NT16824ERROR_QUEUE';
Karen |
|
Back to top |
|
 |
kwelch |
Posted: Tue Nov 19, 2002 12:50 pm Post subject: |
|
|
 Master
Joined: 16 May 2001 Posts: 255
|
Kirani,
So to clarify:
I have Compute1 with Local Environment and Message in advanced tab and copy entire message and I make changes to the local environment now I go to Compute2 same settings because I want to add more to LocalEnvironment, don't I have to code the following statement in Compute2? SET OutputLocalEnvironment = InputLocalEnvironment; Otherwise wouldn't I lose my previous changes from Compute1?
Am I not understanding this? Thanks for any explanations.
Karen |
|
Back to top |
|
 |
lung |
Posted: Tue Nov 19, 2002 5:26 pm Post subject: |
|
|
 Master
Joined: 27 Aug 2002 Posts: 291 Location: Malaysia
|
Karen,
Yes, I think you have to code SET OutputLocalEnvironment = InputLocalEnvironment or you will lose all your previous changes.
I think what Kiran meant to say is that if you're not planning to make any more changes to your LocalEnvironment, you should not set LocalEnvironment in your compute mode or you will lose all your previous changes to your LocalEnvironment unless you specify SET OutputLocalEnvironment = InputLocalEnvironment in your ESQL.
 _________________ lung |
|
Back to top |
|
 |
kirani |
Posted: Tue Nov 19, 2002 7:37 pm Post subject: |
|
|
Jedi Knight
Joined: 05 Sep 2001 Posts: 3779 Location: Torrance, CA, USA
|
You are correct lung!
Yash,
Could you post your ESQL code in Compute node and ExceptionList here? _________________ Kiran
IBM Cert. Solution Designer & System Administrator - WBIMB V5
IBM Cert. Solutions Expert - WMQI
IBM Cert. Specialist - WMQI, MQSeries
IBM Cert. Developer - MQSeries
|
|
Back to top |
|
 |
kwelch |
Posted: Wed Nov 20, 2002 5:27 am Post subject: |
|
|
 Master
Joined: 16 May 2001 Posts: 255
|
Thanks lung and Kirani! That is what I thought was being said but for myself and other newbies I wanted it clarified!
Karen |
|
Back to top |
|
 |
|