Author |
Message
|
mqmaniac |
Posted: Fri May 26, 2006 2:23 pm Post subject: Need to Slower the Message processing |
|
|
 Master
Joined: 27 Dec 2005 Posts: 201
|
I am using WMQI 2.1.9..
I have a flow which is ,able to process 60,000 records in 13 Min.
But the Application does not have such capability.
Is there any Esql statements or any Broker properties which can Reduce the Processing Sped of a flow.
I am looking at 100 records per Min
Please Help... |
|
Back to top |
|
 |
wschutz |
Posted: Fri May 26, 2006 2:36 pm Post subject: |
|
|
 Jedi Knight
Joined: 02 Jun 2005 Posts: 3316 Location: IBM (retired)
|
Why would this be a problem? Either the "slow" application is feeding the flow, in which case it would only feed it 100 msg/min, or it's being fed by the flow, in which case messages will queue up on the flow's output queue. If you slowed the flow, the messages would queue up on the input queue anyways. _________________ -wayne |
|
Back to top |
|
 |
mqmaniac |
Posted: Fri May 26, 2006 2:59 pm Post subject: |
|
|
 Master
Joined: 27 Dec 2005 Posts: 201
|
I am sorry..You got me the other way.
I have to Feed an "Application" with 60,000 Msg's.
The Broker Gets and Input of 70,000 Msg's which It processes and sends it across.
The Application is Unable to process and It Needs a Slower Feed.
Its Input Queue has a Depth of 2000 Only.And That needs to be taken care of in the Flow.
Is there any Way Out??
Pls help. |
|
Back to top |
|
 |
fjb_saper |
Posted: Fri May 26, 2006 5:25 pm Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
Yes, and it is relatively easy.
If this is a discrete phenomenon:
Increase the max depth of your queue to take care of the case ... say 100,000 messages. Make sure there is enough disc space to hold that number. And let the receiving application process at it's own pace.
If this is constant and endemic: get enough instances of the receiving application to process to avoid a queue build up or you'll never catch up.
Enjoy  _________________ MQ & Broker admin |
|
Back to top |
|
 |
mqmaniac |
Posted: Tue May 30, 2006 5:23 am Post subject: |
|
|
 Master
Joined: 27 Dec 2005 Posts: 201
|
Thanks for the reply,
"Increase the max depth of your queue to take care of the case ... say 100,000 messages"
This is not Possible as the Queue Depth is MAx 2000 Only.
IS there any Esql Code to Slower the Flow..
Pls Help...
"get enough instances of the receiving application to process to avoid a queue build up or you'll never catch up. "
Even this is a Constarint and we cannot afford This.. |
|
Back to top |
|
 |
wschutz |
Posted: Tue May 30, 2006 5:31 am Post subject: |
|
|
 Jedi Knight
Joined: 02 Jun 2005 Posts: 3316 Location: IBM (retired)
|
Quote: |
This is not Possible as the Queue Depth is MAx 2000 Only. |
why? ... aside from writing your own plug-in, there is nothing to slow down the flow... but you haven't explained how slowing the flow would actually help, as the messages would then build-up on the flow's input queue. _________________ -wayne |
|
Back to top |
|
 |
mqmaniac |
Posted: Tue May 30, 2006 5:34 am Post subject: |
|
|
 Master
Joined: 27 Dec 2005 Posts: 201
|
The Application which processes the Messages from Flow's Output does not have the capability for some reson I don' know.
There are no Issues In having Messages Pileup on the Input queue of the Flow.Is there any Esql Code which can Pick a Message at an Interval..I mean Pick a message Every 30 Seconds.... |
|
Back to top |
|
 |
Vitor |
Posted: Tue May 30, 2006 5:40 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
mqmaniac wrote: |
This is not Possible as the Queue Depth is MAx 2000 Only.
|
I'm still not clear why this is a restriction , especially as:
mqmaniac wrote: |
There are no Issues In having Messages Pileup on the Input queue of the Flow |
So increase the max depth and let them pile up on the Input queue of the application!  _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
wschutz |
Posted: Tue May 30, 2006 5:47 am Post subject: |
|
|
 Jedi Knight
Joined: 02 Jun 2005 Posts: 3316 Location: IBM (retired)
|
mqmaniac wrote: |
Is there any Esql Code which can Pick a Message at an Interval..I mean Pick a message Every 30 Seconds.... |
wschutz wrote: |
... aside from writing your own plug-in, there is nothing to slow down the flow... |
_________________ -wayne |
|
Back to top |
|
 |
jefflowrey |
Posted: Tue May 30, 2006 5:56 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
You could write a standalone application that would get-enable and then get-disable the flow Input queue every thirty seconds.
You won't be able to guarantee or synchronize how many messages the Broker processes during the interval that the queue is get-enabled, though.
But you will be able to pinch down the output rate this way.
I've done this same kind of throttling at the infrastructure level before (using a standalone program that copied messages from one queue to another at a given rate). It was a bad idea when I did it then, and it's a bad idea now. _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
mqmaniac |
Posted: Tue May 30, 2006 6:34 am Post subject: |
|
|
 Master
Joined: 27 Dec 2005 Posts: 201
|
Thanks for The replies...
I wonder If This could be done Using the Time Intervals.
I am not really good at Esql..if someone could Guide me...
Before Propagating the Message Outbound..Is there any esql code which can Get the Current Time and Add 2 Min to that and Check Time again...
So that the Flow has to Wait .. |
|
Back to top |
|
 |
jefflowrey |
Posted: Tue May 30, 2006 6:50 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
There's no way to make a flow "wait" in ESQL.
If you write a loop that just keeps cycling around until the time has changed by 2 minutes - then you will use up all the CPU on your machine in this loop. _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
Vitor |
Posted: Tue May 30, 2006 7:26 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
You'd also need to invent your own method of finding the time, like a plug-in node. I quote the ESQL reference manual:
Quote: |
The CURRENT_TIME function returns a TIME value representing the current local
time.
Note that, as with all SQL functions that take no parameters, no parentheses are
required or accepted. All calls to CURRENT_TIME within the processing of one
node are guaranteed to return the same value. |
Hence if you take the CURRENT_TIME (or similar), add 2 minutes to it then wait for CURRENT_TIME to reach this value, you'll loop forever.... _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
|