Author |
Message
|
GeneRK4 |
Posted: Wed May 13, 2015 5:27 pm Post subject: Transactionality during failures |
|
|
Master
Joined: 08 Jul 2013 Posts: 220
|
I observed that when a non-transactional message gets catched in catch terminal due to some failures in later nodes,and even though Catch terminal has throw node,it is not entering into Failure terminal finally.It gets discarded.
But if there is any failure in Input node itself,then the non-transactional message is handled in Failure terminal for exceptions.
My query is,why when error happens in latter nodes after being catched in Catch terminal,its not handled further in Failure terminal ,for a non-transactional message?
For Transaction message,behaviour is understandable .It goes into first catch terminal.And finally into Failure terminal. |
|
Back to top |
|
 |
inMo |
Posted: Thu May 14, 2015 4:58 am Post subject: |
|
|
 Master
Joined: 27 Jun 2009 Posts: 216 Location: NY
|
Quote: |
why when error happens in latter nodes after being catched in Catch terminal,its not handled further in Failure terminal |
You just had the opportunity to handle it further off the catch. How many more further opportunities do you need? |
|
Back to top |
|
 |
GeneRK4 |
Posted: Thu May 14, 2015 6:19 am Post subject: |
|
|
Master
Joined: 08 Jul 2013 Posts: 220
|
inMo wrote: |
Quote: |
why when error happens in latter nodes after being catched in Catch terminal,its not handled further in Failure terminal |
You just had the opportunity to handle it further off the catch. How many more further opportunities do you need? |
In catch terminal ,there is a Throw.Hence again in Input node ,error is thrown as "User error thrown".This is not handled in Failure terminal for non-transactional message and it gets simply discarded.
But this is handled in Failure terminal for transactional message. |
|
Back to top |
|
 |
inMo |
Posted: Thu May 14, 2015 6:48 am Post subject: |
|
|
 Master
Joined: 27 Jun 2009 Posts: 216 Location: NY
|
Did you look at the error information off of the failure term, or just observe that a message is propagated? |
|
Back to top |
|
 |
mgk |
Posted: Thu May 14, 2015 7:02 am Post subject: |
|
|
 Padawan
Joined: 31 Jul 2003 Posts: 1642
|
Failure Terminals are only ever fired if there is an exception or error in that node. So in the transactional case, the throw down the Catch terminal actually causes the message to be backed-out to the queue in the Input node, and it is only when it is brought back in again from the queue that the node detects that the thresholds have been exceeded that the message is then sent to the Input node's Failure Terminal.
Kind regards, _________________ MGK
The postings I make on this site are my own and don't necessarily represent IBM's positions, strategies or opinions. |
|
Back to top |
|
 |
GeneRK4 |
Posted: Thu May 14, 2015 4:47 pm Post subject: |
|
|
Master
Joined: 08 Jul 2013 Posts: 220
|
Thanks mgk..
I can understand that when it is transactional,Input node checks for backout threshold and accordingly error is handled in failure terminal.
But when it is non-transactional,backout count check is discarded and hence failure terminal does not act upon the message.Why backout count check is discarded for non-transactional message?I am still not understanding the concept of this.Even for non-transactional message,we may like to do retries upto backout threshold.But why this check is getting discarded? |
|
Back to top |
|
 |
mqjeff |
Posted: Fri May 15, 2015 4:20 am Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
GeneRK4 wrote: |
Thanks mgk..
I can understand that when it is transactional,Input node checks for backout threshold and accordingly error is handled in failure terminal. |
No. It is handled when the message is read from the queue.
GeneRK4 wrote: |
But when it is non-transactional,backout count check is discarded and hence failure terminal does not act upon the message.Why backout count check is discarded for non-transactional message?I am still not understanding the concept of this.Even for non-transactional message,we may like to do retries upto backout threshold.But why this check is getting discarded? |
The handling of non-persistent messages in regards to backout queues is documented in the MQ knowledge center and works the same way for Broker MQInput nodes as it does for any other MQ application (that is written to deal with backout count and backout queue)
Again, a backout count on a message that is greater than the value set on the queue does not cause a message to get sent to the failure terminal. |
|
Back to top |
|
 |
|