Author |
Message
|
happyj |
Posted: Fri May 15, 2009 3:59 am Post subject: Environment tree removed with Timeout Control/Notification |
|
|
Voyager
Joined: 07 Feb 2005 Posts: 87
|
Hi there
We are testing for a WBIMB V5 migration to WMB V6.1.0.3
We have a MRM message that is being delayed using a timeout
control and timeout notification node. This is intended to replace a
custom java node that used Thread.sleep();
what we have noticed and traces show this is that the Environment
tree is being removed or reset after the message goes through
the timeout nodes. We are considering using the RFH2 header to hold the same information that is currently stored in the Environment tree.
Is this expected behaviour and if so are there any better ways to do this kind of thing ? |
|
Back to top |
|
 |
Vitor |
Posted: Fri May 15, 2009 4:10 am Post subject: Re: Environment tree removed with Timeout Control/Notificati |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
happyj wrote: |
are there any better ways to do this kind of thing ? |
Why do you need to delay this message? How is the delay calculated?
(For example, delayed 15 mins because of an affinity problem, processed on the hour every hour to conform to an existing schedule, etc) _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
mqjeff |
Posted: Fri May 15, 2009 4:15 am Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
|
Back to top |
|
 |
Vitor |
Posted: Fri May 15, 2009 4:18 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
mqjeff wrote: |
http://www.ibm.com/developerworks/websphere/library/techarticles/0603_schutz/0603_schutz.html |
I should have this bookmarked; just spent a fruitless 10 mins Googling for it!  _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
mqjeff |
Posted: Fri May 15, 2009 4:23 am Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
Vitor wrote: |
mqjeff wrote: |
http://www.ibm.com/developerworks/websphere/library/techarticles/0603_schutz/0603_schutz.html |
I should have this bookmarked; just spent a fruitless 10 mins Googling for it!  |
Don't make me send you back to the basement lab....
 |
|
Back to top |
|
 |
Vitor |
Posted: Fri May 15, 2009 4:39 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
mqjeff wrote: |
Vitor wrote: |
mqjeff wrote: |
http://www.ibm.com/developerworks/websphere/library/techarticles/0603_schutz/0603_schutz.html |
I should have this bookmarked; just spent a fruitless 10 mins Googling for it!  |
Don't make me send you back to the basement lab....
 |
Sorry my master.....  _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
happyj |
Posted: Fri May 15, 2009 4:53 am Post subject: |
|
|
Voyager
Joined: 07 Feb 2005 Posts: 87
|
thanks very much for the link
I agree any kind of message delay is not an ideal design but this is what we have had to do in a functional 'like for like' upgrade.
in this instance it is used as part of an error handling routine where
a fixed delay is used before retrying a message. |
|
Back to top |
|
 |
Vitor |
Posted: Fri May 15, 2009 5:00 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
happyj wrote: |
in this instance it is used as part of an error handling routine where
a fixed delay is used before retrying a message. |
That seems fair enough. The link should give you all you need. _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
happyj |
Posted: Fri May 15, 2009 10:07 am Post subject: |
|
|
Voyager
Joined: 07 Feb 2005 Posts: 87
|
there is some great stuff in the article particularly around error handling
but I can't see an answer to my actual question.
Can anyone confirm that the Environment tree is lost when a message is delayed using a timeout control and notification pair ? Is this becuase the message is committed to the temporary broker queue?
Does this mean that another instance of the flow runs after the message is returned?
thanks again |
|
Back to top |
|
 |
mqjeff |
Posted: Fri May 15, 2009 10:18 am Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
Yes, the TimeoutNotification node is an input node just like any other input node, it starts an entirely new message flow invocation and the Environment tree is NOT shared between TimeoutControl and TimeoutNotification.
If you need to share data, put it in the message that goes to TimeoutControl. Should be some mention of this in Wayne's article. |
|
Back to top |
|
 |
fschofer |
Posted: Sat May 16, 2009 11:48 pm Post subject: |
|
|
 Knight
Joined: 02 Jul 2001 Posts: 524 Location: Mainz, Germany
|
Hi
Quote: |
We have a MRM message that is being delayed using a timeout
control and timeout notification node. This is intended to replace a
custom java node that used Thread.sleep(); |
Why not simply replace the custom java node with a JavaCompute node ?
Works fine for me.
Greetings
Frank |
|
Back to top |
|
 |
happyj |
Posted: Fri May 29, 2009 2:52 am Post subject: |
|
|
Voyager
Joined: 07 Feb 2005 Posts: 87
|
Thanks for confirming Jeff
Frank, as I understand it Thread.sleep() will sleep the entire process /
execution group rather than just the flow that you want to delay.
This could impact other message flows that are in the same group
and is something we wish to avoid. |
|
Back to top |
|
 |
fschofer |
Posted: Fri May 29, 2009 4:08 am Post subject: |
|
|
 Knight
Joined: 02 Jul 2001 Posts: 524 Location: Mainz, Germany
|
Hi,
i did some testing on this (WMB 6, AIX) and other flows continued to work.
Greetings
Frank |
|
Back to top |
|
 |
gs |
Posted: Fri May 29, 2009 4:25 am Post subject: |
|
|
 Master
Joined: 31 May 2007 Posts: 254 Location: Sweden
|
happyj wrote: |
Frank, as I understand it Thread.sleep() will sleep the entire process /
execution group rather than just the flow that you want to delay.
This could impact other message flows that are in the same group
and is something we wish to avoid. |
This is not necessarily true. Thread.sleep() will only let the thread sleep. Your execution group runs a number of threads limited in a thread pool. If pool usage is maximized, you will have a problem. Thus, if your execution group contains few and low-usage flows you'll generally be safe.
What I'm missing in the Programming patterns link is how to back out messages after a TimeoutNotification node since this isn't done automatically. How have you people dealt with this? We ended up doing a half-dirty solution connecting an MQoutput node & a throw node to the TimeoutNotification catch terminal and setting some parameters. |
|
Back to top |
|
 |
mqjeff |
Posted: Fri May 29, 2009 4:41 am Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
gs wrote: |
What I'm missing in the Programming patterns link is how to back out messages after a TimeoutNotification node since this isn't done automatically |
What do you expect it to back out?
The transaction that led to a TimeoutControl that led to the TimeoutNotification? Not likely.
The transaction that started when the TimeoutNotification node fired? Are you sure it doesn't? |
|
Back to top |
|
 |
|