camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "James Strachan" <>
Subject Re: Apache Camel - Delayer Pattern with ActiveMQ JMS
Date Thu, 17 Jan 2008 09:05:26 GMT
On 17/01/2008, melu <> wrote:
> James.Strachan wrote:
> >
> > Its kinda done like that - the JMS consumer inside Camel consumes the
> > message as usual, adding the sleep - but then using JMS
> > acknowledgements or declarative transactions to consume the message
> > after its been sent on. i.e. its reliable.
> >
> OK, thanks for explanation.
> But please tell me if you mean that it is using Thread.seep() of Java? I
> have many messages per hour (about 100 000) and I need some mechanism to
> delay them about 5 minutes. If it is using normal sleep than it is not good
> solution for my problem because a lot of memory will be consumed (becasue
> many threads will be in sleep state). Am I right?

If all messages are being delayed by the same amount, then its the
message broker that will be buffering them up. If you are using
ActiveMQ then due to the slow consumers (as they are 5 minutes behind
the producers) it will stream to disk.

i.e. a delayer will consume a single message, then sleep until the
message has been delayed enough, then send it & commit the
transaction. So its only gonna process one message at once - its not
gonna get 100,000 messages in RAM or anything.

With JMS consumers if you are using ActiveMQ you should always be a
little careful about the prefetch size - as that does use up RAM - but
thats a general JMS thing...

So in summary - delaying delivery of messages is a problem the message
broker has to deal with - you're client is just a regular JMS consumer
& won't run out of RAM


Open Source Integration

View raw message