Author |
Message
|
mark.luebinski |
Posted: Mon Jan 29, 2007 1:53 am Post subject: Can I determine MQInput-queue-name in ESQL of the Subflow? |
|
|
Acolyte
Joined: 27 Mar 2006 Posts: 56
|
Dear Masters,
I like to make very simple error-handling for Db-flows. If I get DB-Exception, the message must wait some seconds and then I like to retry.
So, with Timecontrolled-Node I can make this delay. But I like also dynamicly determine in which queue I have to write the message back (yes, sure, I increase one special counter in Environment first to avoid deadlocks).
I can make this with external Variable of the BAR, but much better would be, if I could put in the OutputLocalEnvironment.Destination of my error-handling-Subflow the real Input-Queue of the main flow.
Thank you very much!!
Mark |
|
Back to top |
|
 |
elvis_gn |
Posted: Mon Jan 29, 2007 1:57 am Post subject: |
|
|
 Padawan
Joined: 08 Oct 2004 Posts: 1905 Location: Dubai
|
|
Back to top |
|
 |
mark.luebinski |
Posted: Mon Jan 29, 2007 2:05 am Post subject: |
|
|
Acolyte
Joined: 27 Mar 2006 Posts: 56
|
Hi elvis_gn,
thank you for the light-speed answer.
I this list I don't see anything about message headers. But I tried with
SET OutputLocalEnvironment.Destination = InputRoot.MQMD.SourceQueue;
but this field is empty.
Do you maybe have another idea about InputRoot.MQMD... or other Field?
Thank you very much!
Mark |
|
Back to top |
|
 |
elvis_gn |
Posted: Mon Jan 29, 2007 2:11 am Post subject: |
|
|
 Padawan
Joined: 08 Oct 2004 Posts: 1905 Location: Dubai
|
Hi mark.luebinski,
mark.luebinski wrote: |
I this list I don't see anything about message headers. But I tried with
SET OutputLocalEnvironment.Destination = InputRoot.MQMD.SourceQueue;
but this field is empty. |
The property of queue name is not in the list, that was just for your reference.
The queue name should have been in the MQMD...put a trace or debug and check if the queue name was populated in the header...you will need to store it into the Environment, right after the Input node...perhaps down the flow the name is getting lost...
Regards. |
|
Back to top |
|
 |
mark.luebinski |
Posted: Mon Jan 29, 2007 2:37 am Post subject: |
|
|
Acolyte
Joined: 27 Mar 2006 Posts: 56
|
Hi elvis_gn,
you are right, the InputRoot.MQMD.SourceQueue get lost between TimeOutControl and TimeOutNotification!!! Can I avoid this?!
But the problem itself is solved, I would save the stuff in Environment before of TimeOutControl!
Thank you very much!
Mark |
|
Back to top |
|
 |
mark.luebinski |
Posted: Mon Jan 29, 2007 4:04 am Post subject: |
|
|
Acolyte
Joined: 27 Mar 2006 Posts: 56
|
Hi elvis_gn,
not only MQMD.SourceQueue, but also Envoronment, OutputLocalEnvironment (most of fields, all except of special OutputLocalEnvironment.TimeoutRequest - field) is lost between TimeOutControl and TimeOutNotification!
I will try InputRoot.MQRFH2, but maybe you know the better possibility to save data in any Environment?!
Thank you!
Mark |
|
Back to top |
|
 |
elvis_gn |
Posted: Mon Jan 29, 2007 4:26 am Post subject: |
|
|
 Padawan
Joined: 08 Oct 2004 Posts: 1905 Location: Dubai
|
Hi mark.luebinski,
I dont think MQRFH2 will also help...
I hope you have the timer nodes in the same flow...use a shared variable or so to store the queue name...
But all said and done, from your first post, I don't actually like the idea of you putting the message back onto the input queue when the DB is down...Feels like the flow will keep looping...
Regards. |
|
Back to top |
|
 |
mark.luebinski |
Posted: Mon Jan 29, 2007 6:33 am Post subject: |
|
|
Acolyte
Joined: 27 Mar 2006 Posts: 56
|
Hi elvis_gn,
shared Variable is too risky, because many flows could use diferent instance of this subflow with different timeouts.
Loop is not possible, because i try only twice (we have 2 DBMS) and if my counter is 2 i Throw an exception, so that the message come in Error-queue.
But neithermore, thank you very much.
Mark |
|
Back to top |
|
 |
jefflowrey |
Posted: Mon Jan 29, 2007 7:00 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
Normally, people use backout processing to handle this for them.
But if you want to wait a minute, for example, before backing out, then you do need to use Timeout nodes. _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
AkankshA |
Posted: Mon Jan 29, 2007 7:21 am Post subject: |
|
|
 Grand Master
Joined: 12 Jan 2006 Posts: 1494 Location: Singapore
|
You can use MQRFH2 header to transmit info across time out nodes...
u can use the psc folder or can even create a folder of your own in side MQRFH2 header. |
|
Back to top |
|
 |
mark.luebinski |
Posted: Mon Jan 29, 2007 9:18 am Post subject: |
|
|
Acolyte
Joined: 27 Mar 2006 Posts: 56
|
@Akanksha - Thank you, MQRFH2 was the single thing, that works stable. But I'm wondering about lost of some MQMD-Properties and (Local)Environment between nessesary nodes
@jeff - YES! But our admins don't like red points in Windows Event list! Funny - but it is so, we use backout for all other stuff - and here after third try. |
|
Back to top |
|
 |
AkankshA |
Posted: Mon Jan 29, 2007 9:36 am Post subject: |
|
|
 Grand Master
Joined: 12 Jan 2006 Posts: 1494 Location: Singapore
|
as i said create a folder in MQRFH2 header and store all the elements you require in that....
some properties in MQMD will get change as TimeOut nodes put the msgs in broker queue SYSTEM.BROKER.TIMEOUT.QUEUE....
so u need to make your design accordingly
good luck |
|
Back to top |
|
 |
|