Author |
Message
|
sten72 |
Posted: Thu Mar 04, 2004 5:40 am Post subject: PROPAGATE: how to get ALL messages or NO message ? |
|
|
Newbie
Joined: 20 Oct 2003 Posts: 7
|
Hi all,
I am using the PROPAGATE statement in a compute node to generate a number of output messages from the input one... (through a WHILE cicle).
What happens if an EXCEPTION verifies during the n-th iteration of the WHILE cicle ?
I noticed that all the messages propagated BEFORE the exception reach in any case the output MQ queue (while the input message is obviously sent back to the Try-Cath node...) !!!
Well, what I need instead is to have ALL messages propagated (if no exception occurs) or NO message propagated (if an exception occurs).
How? Anyone can help?
Thanks,
Antonio Formaggio
IBM Italy
AMS IT Specialist |
|
Back to top |
|
 |
jefflowrey |
Posted: Thu Mar 04, 2004 6:43 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
What is the transaction mode of the Output node? _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
EddieA |
Posted: Thu Mar 04, 2004 7:45 am Post subject: |
|
|
 Jedi
Joined: 28 Jun 2001 Posts: 2453 Location: Los Angeles
|
And the Input node.
Cheers, _________________ Eddie Atherton
IBM Certified Solution Developer - WebSphere Message Broker V6.1
IBM Certified Solution Developer - WebSphere Message Broker V7.0 |
|
Back to top |
|
 |
Missam |
Posted: Thu Mar 04, 2004 8:04 am Post subject: |
|
|
Chevalier
Joined: 16 Oct 2003 Posts: 424
|
I Guess your incoming message is not a persistent one.If not make sure you have transaction mode property for both input and output node properties is set to yes. |
|
Back to top |
|
 |
sten72 |
Posted: Thu Mar 04, 2004 9:06 am Post subject: |
|
|
Newbie
Joined: 20 Oct 2003 Posts: 7
|
I tried to change the "Transaction mode" property of the Input and Output queues, but no way...
... if an exception occurs I still get the input message back to the Failure Queue and some messages (the "propagated" ones) reaching the Output queue.
If you have any other ideas... Thanks
Antonio Formaggio
IBM Italy
AMS IT Specialist |
|
Back to top |
|
 |
Missam |
Posted: Thu Mar 04, 2004 12:34 pm Post subject: |
|
|
Chevalier
Joined: 16 Oct 2003 Posts: 424
|
what level of csd are you working with. |
|
Back to top |
|
 |
jefflowrey |
Posted: Thu Mar 04, 2004 12:59 pm Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
Please tell us what you tried changing the transaction modes to, and what they were.
In addition, please tell us what you are doing within your exception handling, and how you have exception handling set up. _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
kirani |
Posted: Thu Mar 04, 2004 4:16 pm Post subject: |
|
|
Jedi Knight
Joined: 05 Sep 2001 Posts: 3779 Location: Torrance, CA, USA
|
Your PROPOGATED messages will rollback only when you'r catch terminals (of MQInput node or Try-catch node) processing ends with a "Throw" node/statement. _________________ 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 |
|
 |
jgooch |
Posted: Fri Mar 05, 2004 1:37 am Post subject: |
|
|
 Acolyte
Joined: 29 May 2002 Posts: 63 Location: UK
|
Why not use a destination list instead of PROPAGATE? |
|
Back to top |
|
 |
jefflowrey |
Posted: Fri Mar 05, 2004 6:07 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
jgooch wrote: |
Why not use a destination list instead of PROPAGATE? |
Because a destination list would propagate the entire input message to every destination in the list.
The propagate function allows you to break an incoming message up into separate pieces, and forward those pieces to individual destinations. _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
jgooch |
Posted: Fri Mar 05, 2004 6:09 am Post subject: |
|
|
 Acolyte
Joined: 29 May 2002 Posts: 63 Location: UK
|
True enough. It does, however, solve the transaction problem. The downstream flows/apps might be able to ignore the parts of the message that are irrelevant to them.
The information in the first post did not lead me to believe that mine was an inappropriate solution.
J. |
|
Back to top |
|
 |
jefflowrey |
Posted: Fri Mar 05, 2004 6:21 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
Well, I read "generate a number of output messages from the input one... (through a WHILE cicle)" to mean that he's breaking an input up into multiple pieces.
But maybe I read wrong..  _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
EddieA |
Posted: Fri Mar 05, 2004 7:18 am Post subject: |
|
|
 Jedi
Joined: 28 Jun 2001 Posts: 2453 Location: Los Angeles
|
kirani wrote: |
Your PROPOGATED messages will rollback only when you'r catch terminals (of MQInput node or Try-catch node) processing ends with a "Throw" node/statement. |
But, if you don't use a Catch, then (depending on Transaction modes) it should roll back. _________________ Eddie Atherton
IBM Certified Solution Developer - WebSphere Message Broker V6.1
IBM Certified Solution Developer - WebSphere Message Broker V7.0 |
|
Back to top |
|
 |
sten72 |
Posted: Fri Mar 05, 2004 7:36 am Post subject: |
|
|
Newbie
Joined: 20 Oct 2003 Posts: 7
|
I did some more tests... (I'm working with WMQI 2.1 CSD 6).
As you suggested, I changed the "Transaction Mode" property (for both Input and Output nodes) from the default values to "Yes".
Anyway... I didn't know that the rollback happens ONLY IF the catch terminals (of MQInput node or Try-Catch node) end with a "Throw" node/statement.
Now IT WORKS !!!
If an exception verifies during message processing, I get only the original input message in the FAILURE queue, the one connected to the failure terminal of the MQInput node.
THANKS A LOT !!!
But now, always about the rollback/transaction issue, I am wondering two more things...
1) Which is the difference between:
- using a "TryCatch" node (catch terminal connected to "Throw" node) between MQInput and Compute;
- connecting the MQInput (catch terminal always connected to "Throw" node) directly to the Compute, without any "TryCatch" node;
2) How can I handle the exception in the rollback case? Is it possible to log (in a DB2 table or somewhere else...) the reason of the bad processing, for example the exception code / user description ?
Cheers,
Antonio Formaggio _________________ IBM Italy
AMS IT Specialist |
|
Back to top |
|
 |
Missam |
Posted: Fri Mar 05, 2004 12:56 pm Post subject: |
|
|
Chevalier
Joined: 16 Oct 2003 Posts: 424
|
Quote: |
1) Which is the difference between:
- using a "TryCatch" node (catch terminal connected to "Throw" node) between MQInput and Compute;
- connecting the MQInput (catch terminal always connected to "Throw" node) directly to the Compute, without any "TryCatch" node;
|
Either way you can catch and handle the exception
Quote: |
2) How can I handle the exception in the rollback case? Is it possible to log (in a DB2 table or somewhere else...) the reason of the bad processing, for example the exception code / user description ?
|
you can add a compute node and handle the exception for further processing.even you can log these in to the database. |
|
Back to top |
|
 |
|