activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mick Knutson" <mknut...@baselogic.com>
Subject Re: New message timeout design question
Date Tue, 16 Sep 2008 17:26:49 GMT
1 thought I had  looking through the patterns is using an aggregator. Even
though there is only 1 message going out.
Then, I could passivate the AggregatorCollection. Then add a correclationId
to the outgoing message. Now I would expect the new message that was created
by the Python service to hav ethat correlationId.

Note, the return message is not a respose. it is just a message that states
the change request was processed. I need this seperation because there is a
specific CR that can take 24 hours to complete.

So then, when a new message is returned that has my correclationId, within
the alloted timeframe, we are complete, otherwise the aggreggator can have a
TTL then send a new message to the DLC.

Does this sound correct?





On Mon, Sep 15, 2008 at 10:36 PM, James Strachan
<james.strachan@gmail.com>wrote:

> 2008/9/15 Mick Knutson <mknutson@baselogic.com>:
> > I would like to get some design help on a situation I need to address.
> >
> > I have a Manager that sends a ChangeRequest message to a Python server.
> This
> > CR could take an hour to perform. But I want to implement a timeout on
> the
> > CR. So after I send out this CR message, how do I create an alert message
> in
> > 1.1 hours to another processor?
>
> You could try setting a 1 hour time to live on the message; then if
> the message is not processed within an hour the message will be sent
> to a DLQ which you could subscribe to and notify another processor.
>
> Though with this approach if a server consumes the message but just
> takes 2 hours to process it, you'd not get a notification of it taking
> too long.
>
> So maybe you should do the following for each message that is going to
> be processed...
>
> * create a timer (say with Quartz) with details of the current message
> * consume the message by a processor and send a completion message to
> the JMSReplyTo destination when it has been completed (preferably in a
> JMS transaction so its atomic)
> * consume the completion message and delete the timer for that message
> correlationID
> * on the timer firing, send a message to the other processor that the
> message was not processed in time
>
> This does seem an interesting pattern we could maybe implement in Camel...
> http://activemq.apache.org/camel/enterprise-integration-patterns.html
>
> There's no obvious pattern yet in the EIP book - but there may be in
> Gregors next book which is gonna be more conversational. Essentially
> we could do with a kinda 'timed message acknowledgement' pattern;
> where if a success message is not received before the timer fires, we
> send a fail message somewhere.
>
> Another approach BTW is to use BPEL to wrap up this process.
>
> --
> James
> -------
> http://macstrac.blogspot.com/
>
> Open Source Integration
> http://open.iona.com
>



-- 
---
Thank You…

Mick Knutson
BASE Logic, inc.
(415) 354-4215

Website: http://baselogic.com
Blog: http://baselogic.com/blog
BLiNC Magazine: http://blincmagazine.com
Linked IN: http://linkedin.com/in/mickknutson
DJ Mick: http://djmick.com
MySpace: http://myspace.com/mickknutson
Vacation Rental: http://tahoe.baselogic.com

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message