Author |
Message
|
mqhelpless |
Posted: Fri Dec 30, 2005 1:11 am Post subject: Error handling |
|
|
Apprentice
Joined: 13 Jul 2005 Posts: 33
|
I have a message flow that takes from an input Q and output to several Qs (using the dynamic DestinationList method) . I need to do error handling such that whenever a few of the several output Qs are not reachable, I need to identify them and place an error msg in related Qs. What I need to know is can I identify the various Qs which fail when the msg was being put across? |
|
Back to top |
|
 |
elvis_gn |
Posted: Fri Dec 30, 2005 2:56 am Post subject: |
|
|
 Padawan
Joined: 08 Oct 2004 Posts: 1905 Location: Dubai
|
Hi mqhelpless,
I am not going to say it with sureity that the flow will not be able to handle checking if the queue exists, as I think when the message is outputted, if the queue does not exist it will be sent to the dead letter queue.
OR
Perhaps if you are using Java then when you try to connect to a queue, you will get an exception as "Queue Does not exist" and hence handle it.
I could be wrong about the first, second is definitely possible, or maybe v6.0 can have a solution for this.....not very sure.
Regards. |
|
Back to top |
|
 |
premkumar |
Posted: Sun Jan 01, 2006 11:15 pm Post subject: |
|
|
 Apprentice
Joined: 24 Feb 2004 Posts: 40
|
Hi,
Yes u can identify the error message and the queue that is not available.
Just u need so built a seperate error handler flow....if the destination queue is not available then the XML exception message will look like this
Code: |
<Error>
<TimeOfError>2006-01-02 12:43:45.827</TimeOfError>
<MessageID>414d512042524b4e4557514d2020202043afb4432000135e</MessageID>
<ExceptionList>
<File>F:\build\S500_P\src\DataFlowEngine\ImbMqOutputNode.cpp</File>
<Line>751</Line>
<Function>ImbMqOutputNode::evaluate</Function>
<Type>ComIbmMQOutputNode</Type>
<Name>TKML_ERR_FLOW#FCMComposite_1_2</Name>
<Label>TKML_ERR_FLOW.MQOutput</Label>
<Text>Caught exception and rethrowing</Text>
<Catalog>BIPv500</Catalog>
<Severity>3</Severity>
<Number>2230</Number>
<RecoverableException>
<File>F:\build\S500_P\src\DataFlowEngine\ImbMqOutputNode.cpp</File>
<Line>1874</Line>
<Function>ImbMqOutputNode::putMessage</Function>
<Type>ComIbmMQOutputNode</Type>
<Name>TKML_ERR_FLOW#FCMComposite_1_2</Name>
<Label>TKML_ERR_FLOW.MQOutput</Label>
<Text>Failed to open queue</Text>
<Catalog>BIPv500</Catalog>
<Severity>3</Severity>
<Number>2604</Number>
<Insert>
<Type>5</Type>
<Text></Text>
</Insert>
<Insert>
<Type>5</Type>
<Text>TESTTTT</Text>
</Insert>
<Insert>
<Type>2</Type>
<Text>2</Text>
</Insert>
<Insert>
<Type>2</Type>
<Text>2085</Text>
</Insert>
</RecoverableException>
</ExceptionList>
</Error>
|
For eg : The above error message says the mq error code 2085 (MQRC_UNKNOWN_OBJECT_NAME) and also the queue name "TESTTTT" which is not available in the Queue manager specified.
From the Exception tree u can get the Queue name and the error code. the error handler flow can be enhanced as per ur requirement. _________________ Thanks and Regards,
Premkumar.S |
|
Back to top |
|
 |
mqhelpless |
Posted: Mon Jan 02, 2006 5:15 pm Post subject: |
|
|
Apprentice
Joined: 13 Jul 2005 Posts: 33
|
Hi thanks for the input. I will try it out .. Cheers! |
|
Back to top |
|
 |
mqhelpless |
Posted: Thu Jan 05, 2006 5:44 pm Post subject: |
|
|
Apprentice
Joined: 13 Jul 2005 Posts: 33
|
Hi, I have the following message tree. I need help in traversing this tree.
<exception ..>
<a>
....
....
<b>
......
......
<c> ......... </c>
<d> ......... </d>
<e> ......... </e>
</b>
</a>
<exception ..>
- where a,b,c,d,e are all recoverableexceptions
specifically I need to go into <c>, <d> and <e>. i've read up on move lastchild, but is not too sure what it accomplishes. when i do a 'move start lastchild' assuming beforehand i had done a 'Declare start REFERENCE TO ExceptionList.*[1];', where would the lastchild leads me to? |
|
Back to top |
|
 |
elvis_gn |
Posted: Thu Jan 05, 2006 8:20 pm Post subject: |
|
|
 Padawan
Joined: 08 Oct 2004 Posts: 1905 Location: Dubai
|
Hi mqhelpless,
When u declare start to ExceptionList.*[1];
it means that start is at <a>
If you do a move lastchild, it will move start to the last child within <a>...
Regards. |
|
Back to top |
|
 |
angka |
Posted: Thu Jan 05, 2006 9:33 pm Post subject: |
|
|
Chevalier
Joined: 20 Sep 2005 Posts: 406
|
Hi elvis_gn,
You mean (e) in this case is it?
Thank you
Regards. |
|
Back to top |
|
 |
elvis_gn |
Posted: Thu Jan 05, 2006 9:43 pm Post subject: |
|
|
 Padawan
Joined: 08 Oct 2004 Posts: 1905 Location: Dubai
|
Hi angka,
Quote: |
You mean (e) in this case is it? |
No, it would be <b>....
I would have meant <e>, if start was referencing <b>
LastChild means the last simple/complex type of a parent complex type.
Refer the ESQL pdf, search for LASTCHILD, u'll understand the usage perfectly.
Regards. |
|
Back to top |
|
 |
premkumar |
Posted: Thu Jan 05, 2006 9:52 pm Post subject: |
|
|
 Apprentice
Joined: 24 Feb 2004 Posts: 40
|
Hi,
To access the last field of the tree...
* Field[<] indicates the last element.
* Field[<1] indicates the last element.
* Field[<2] indicates the last but one element (the penultimate element).
Pls read the ESQL document before asking these basic questions..... _________________ Thanks and Regards,
Premkumar.S |
|
Back to top |
|
 |
|