Author |
Message
|
gappodi |
Posted: Fri Sep 05, 2014 2:59 am Post subject: Empty Envirnment tree in TimeOut terminal of HTTP input node |
|
|
 Voyager
Joined: 05 Sep 2014 Posts: 76
|
I am having a serious problem while running a message flow that includes
(1) An HTTP input node
(2) followed by a few Java, Compute and filter nodes
(3) followed by an HTTP header and HTTP request nodes
(4) finally an HTTP reply node.
In my HTTP input node, I have the timeout terminal that is connected to few other nodes. Here again I make use of few Java, Compute and HTTP reply nodes to handle the request timeout condition.
As mentioned in no. (2), I set a lot of Environment variables to be used further downstream the flow.
When the timeout condition is met, the flow gets routed to the TimeOut terminal of the HTTP input node as mentioned in no. (1). However, to my surprise, I find that the Environment tree is completely empty and does not have any variable that I set earlier. I need those variables to use in the TimeOut terminal flow.
I tried writing a java compute node just before the flow enters into the timeout terminal. But Still I do not find it there.
In my Java compute node, following is what I wrote and expected it to be available in the message tree.
outMessage.getRootElement().getLastChild().createElementAsFirstChild(MbElement.TYPE_NAME_VALUE, "State3", "Failed");
What wrong am I doing here ? How can I do it via writing an ESQL compute code ?
Can please anyone help me in resolving this. Thanks in advance. |
|
Back to top |
|
 |
fjb_saper |
Posted: Fri Sep 05, 2014 4:35 am Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
If the time out terminal is triggered the only message available to you is the input message to the node that triggered the timeout...  _________________ MQ & Broker admin |
|
Back to top |
|
 |
gappodi |
Posted: Fri Sep 05, 2014 5:24 am Post subject: |
|
|
 Voyager
Joined: 05 Sep 2014 Posts: 76
|
Yes. So is there no way I can make the environment variables set earlier available to the HTTP input node ? |
|
Back to top |
|
 |
mqjeff |
Posted: Fri Sep 05, 2014 5:33 am Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
gappodi wrote: |
Yes. So is there no way I can make the environment variables set earlier available to the HTTP input node ? |
Not to the timeout terminal, no. The timeout terminal will fire regardless of what happens with the rest of your flow, and it will do it asynchronously. |
|
Back to top |
|
 |
gappodi |
Posted: Fri Sep 05, 2014 8:35 am Post subject: |
|
|
 Voyager
Joined: 05 Sep 2014 Posts: 76
|
Alright. I noticed while debugging in eclipse that when the flow starts AND also when it enters into the TimeOut terminal, there is an HTTPInputHeader element available to the Message tree. So is there a way I could set the desired variable here and could use it later when the flow enters to the TimeOut terminal ?
I might be sounding senseless here but all I am trying is to achieve what I want to and get through it.
Thanks. |
|
Back to top |
|
 |
kimbert |
Posted: Mon Sep 08, 2014 1:07 am Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
The timeout thread in the HTTPInput node is a separate thread from the main flow. It's rather like a separate message flow that runs in parallel with the main flow. That's why the Environment tree is not available at the timeout terminal.
Modifying the HTTPInputHeader is not the way to go.
You may be able to use a shared row variable in ESQL. That would apply to all instances of the flow, so you would need to use the replyId as a corrrelator to retrieve the information for the current flow instance.
You would also need some way to purge old values from the shared variable - maybe with a timeout flow that purges all values older than X seconds. _________________ Before you criticize someone, walk a mile in their shoes. That way you're a mile away, and you have their shoes too. |
|
Back to top |
|
 |
|