Author |
Message
|
udayakumarisampalli |
Posted: Tue Dec 05, 2006 9:01 pm Post subject: how to stop perticular message for perticular amount of time |
|
|
Novice
Joined: 20 Jul 2006 Posts: 19 Location: India
|
hi,
i have designed a flow which makes of the following things & functionality
1. it will starts with 'TimeoutNotification' node.
2. it is connected with MQGet after which some comput nodes and MQ Output node.
3. again MQ output node connected with the MQ Get node input termina.
Functionality:
this flow will start at intervel of 10 min and picks up messsage from Queue 'AA" and process it. as MQ Output node connected the MQGET node will process all the messages in the Queue 'AA' once the flow started after 10 MIN.
According my requirement, as each message contain some time stamp which says when to process that message. if that time stap is less than the current timestamp i will put message in the source Queue 'AA' else i will send the message to destination Queue.
ex: if Timestamp(TS) in message says 10PM and current TS is 9PM i will put this message agian to sourece Queue.
now my problem is that as this flow starts agian in an intervel of 10 min i.e., 9:10 PM it will again process the same message and as the time to process it is 10 PM again put the source Queue. so like this message is picking up by flow for many times.
can we make the flow to pickup the message only once after it checed the timestamp for fist time . i.e, message should be procesed maximum of 2 times by this flow before it sends to the destination Queue.
but mean while the flow should process at every 10 min for the rest of the messages. how can i achieve this? please provide me some kind of inputs.
is CommitCount property of flow will be used for this? if so please tell me how to use this. |
|
Back to top |
|
 |
elvis_gn |
Posted: Tue Dec 05, 2006 9:40 pm Post subject: |
|
|
 Padawan
Joined: 08 Oct 2004 Posts: 1905 Location: Dubai
|
Hi udayakumarisampalli,
I would suggest that you put all your messages into a queue, run a scheduled task on it every 10 min...
That scheduled task should take your messages and move them to the queue which runs the flow, when required...
All said and done, dont use MQ as a storage...
Regards. |
|
Back to top |
|
 |
udayakumarisampalli |
Posted: Tue Dec 05, 2006 9:55 pm Post subject: |
|
|
Novice
Joined: 20 Jul 2006 Posts: 19 Location: India
|
hi elvis,
here my problem is not storing in the Queue and shceduling it at 10 min. because i could able to achieve it through "Timeoutnotification" node but as i told i need to stop certain message being processed for sectond time by the flow till the timestamp in the message reaches the current timestamp. but mean while when the flow triggers at every 10 min the rest of all the messages should be processed.
thank you
regards
Uday |
|
Back to top |
|
 |
Gaya3 |
Posted: Tue Dec 05, 2006 9:59 pm Post subject: |
|
|
 Jedi
Joined: 12 Sep 2006 Posts: 2493 Location: Boston, US
|
Hi
As you know the queue works in FIFO, or in priority wise.
So what ever be the messages in the queue will be get processed by the flow.
Thanks and Regards
Gayathri _________________ Regards
Gayathri
-----------------------------------------------
Do Something Before you Die |
|
Back to top |
|
 |
jbanoop |
Posted: Tue Dec 05, 2006 10:02 pm Post subject: |
|
|
Chevalier
Joined: 17 Sep 2005 Posts: 401 Location: SC
|
u should look at setting the time interval in which to run the flow (the configuration on timeout notification) to a more optimal value (maybe increase the time interval) so that you can minimise the number of times it samples one message ..
u shld not be encountering the same message more than twise too often because of the FIFO behaviour, so look at optimizing ur flow run time and u shld be ok i guess.
Anoop |
|
Back to top |
|
 |
elvis_gn |
Posted: Tue Dec 05, 2006 10:24 pm Post subject: |
|
|
 Padawan
Joined: 08 Oct 2004 Posts: 1905 Location: Dubai
|
Hi udayakumarisampalli,
udayakumarisampalli wrote: |
i need to stop certain message being processed for sectond time by the flow till the timestamp in the message reaches the current timestamp. but mean while when the flow triggers at every 10 min the rest of all the messages should be processed. |
Thats the reason I asked you to use a scheduled task.
Running the messages from the flow again and again is going to be more costly than using a small java app, that simply checks the time in your message and routes it or not.
But, personally my best design would be to run a flow to insert these messages into a db, I would set the time in a column, then trigger another flow to run every 10min to pick only those rows that have past the time and dont have a flag set as "processed". Run these messages and update their status as "processed".
I would expect my first flow to keep entering new rows and cleaning processed ones.
Regards. |
|
Back to top |
|
 |
udayakumarisampalli |
Posted: Tue Dec 05, 2006 10:28 pm Post subject: |
|
|
Novice
Joined: 20 Jul 2006 Posts: 19 Location: India
|
hi Anoop,
i got what you told but. i can not increase the intervel because i will get around 50+ message in every 10 min so i will be fixing the interval as 10 min or else less than that. in such case if a message processed at 8 PM as the rquired process time is 10 min i need put this message in the souce Queue. in such case as at each 10 min it will process all the messages, even though this message present at the end it will get procesed at least 12 times which i need to control.
do you any thing about CommitCount property of the flow? can we this for this scenario.
thank you
regards
Uday |
|
Back to top |
|
 |
udayakumarisampalli |
Posted: Tue Dec 05, 2006 10:34 pm Post subject: |
|
|
Novice
Joined: 20 Jul 2006 Posts: 19 Location: India
|
hi Elvis,
thank you. i too think you design wold be much suitable for this requirement. i will try this out.
do you know any details about "CommitCount" property of the message flow? can we use this.
regards
Uday |
|
Back to top |
|
 |
jbanoop |
Posted: Tue Dec 05, 2006 11:44 pm Post subject: |
|
|
Chevalier
Joined: 17 Sep 2005 Posts: 401 Location: SC
|
broker help says this about commit count
Quote: |
How many input messages are processed by the message flow before a syncpoint is taken. |
so i guess u will not find it useful and I would concur that Elvis_gn's suggestion would be the way to go unless u have a lead or mgr breathin down ur neck to use the former approach.
Best of luck
Anoop |
|
Back to top |
|
 |
elvis_gn |
Posted: Tue Dec 05, 2006 11:53 pm Post subject: |
|
|
 Padawan
Joined: 08 Oct 2004 Posts: 1905 Location: Dubai
|
Hi udayakumarisampalli,
The CommitCount is for committing a 'x' number of messages together, I don't see how you want it to apply here.
I'm not sure, but I think it will work as below:
Say your commit count is 5...if 4 messages are successfully processed, they will still not appear in the output queue(unless transaction is at no), when the 5th message is also successfully processed, all will appear in the output, if the 5th fails, then all will be rolled back to the input queue.
Not want your want I suppose...if you dont want to process a message, you'll have to throw a user exception...in that case the backout count will keep increasing...a total mess...
Regards. |
|
Back to top |
|
 |
jefflowrey |
Posted: Wed Dec 06, 2006 2:11 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
Read every message from the queue in an unscheduled manner.
Insert every message into a database table, that has columns for the times you need in them.
Have a timeout node fire every minute or 30 seconds or whatever you can live with.
When the timeout node fires, get every message from the database that needs to be processed. _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
fjb_saper |
Posted: Wed Dec 06, 2006 3:35 am Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
Review the overall design. If this is for some ERP like function let the ERP do the right scheduling. You just transport messages from A to B and if necessary transform them. You should in no way be involved in a "time delay" scheme.
If a time delay scheme is necessary it should not be the Bus's responsability but the application's responsability. You should then possibly have an SLA defined with the application...
Enjoy  _________________ MQ & Broker admin |
|
Back to top |
|
 |
jefflowrey |
Posted: Wed Dec 06, 2006 4:29 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
fjb_saper wrote: |
If a time delay scheme is necessary it should not be the Bus's responsability but the application's responsability. |
It can be argued that this is a common, reusable process, and so should be a service.
And since it is somewhat transport related, it could be considered a service in the ESB rather than in a particular application. _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
fjb_saper |
Posted: Wed Dec 06, 2006 2:02 pm Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
Sure but the service as such is not an ESB service. Write the service provider to take advantage of the ESB as a transport and externalize it. Implement it via a DB by all means.
That app should be a service provider to the rest of the enterprise...
This is just my view.... _________________ MQ & Broker admin |
|
Back to top |
|
 |
|