ActiveMQ 4.1.x and before keep all inflight messages in memory. 4.2.x changed so that persistent messages are cursored in as needed so it should have a better memory footprint for large queues.
On 6/7/07, Anthrope <[EMAIL PROTECTED]> wrote:
Hello, I am sure people have dealt with this in the past, but I couldn't find anything in prior posts that completely answered my question, so here it is: We are using ActiveMQ 4.1.1 with MySQL as the persistence store. We push through messages that are typically 50k-100k in size, over persistent queues. Sometimes, the number of messages in a particular broker can grow a fair bit because the queues are not being drained. Today, we had a situation where we shut down a broker that had roughly accumulated 1.2 million messages on a queue. The broker restarted just fine, but had an out of memory error when a client tried to connect (we have allotted the VM 2G of memory). Is there a limit on the number of messages that can be resident in persistent store before recovery is impossible? FWIW, we are not using a UsageManager in our broker configuration. Having looked quite closely at the code, I am inclined to think that this is because the broker invokes the recover() method on the JDBCMessageStore class, which in turn tries to recover *all* the messages. If this hypothesis is indeed correct, my question would be how this could be avoided. Solving this is important to me not just for this particular issue, but also due to the fact that I have written a SleepyCat BDB adaptor to ActiveMQ, and would like to ensure that it is not susceptible to the same issue. I would appreciate any advice/help on this issue. Thanks much in advance, Prashanth Nandavanam -- View this message in context: http://www.nabble.com/Broker-Out-of-Memory-tf3885035s2354.html#a11012019 Sent from the ActiveMQ - User mailing list archive at Nabble.com.
-- Regards, Hiram Blog: http://hiramchirino.com