We're using activemq-all-5.2.0.jar ... more information is listed at the bottom of the original post.
Andreas Gies-3 wrote: > > Hi there, > > which version of Active MQ are you using ? > > > Regards > Andreas > On Mar 24, 2009, at 9:20 PM, jvh wrote: > >> >> We are experiencing an OutOfMemoryError when using MirroredQueues >> and I was >> wondering if someone could comment on whether our use (or >> interpretation) of >> these Mirrored Queues is correct, or if there is a bug in the >> BrokerService >> code. >> >> In our case, we have an existing application “A” that uses >> messaging, but we >> now have a new application “B” that will only sometimes monitor the >> messaging on the original application “A”. We don’t want the first >> application “A” to have to know about, or to do anything different if >> application “B” is there listening to the messages or not. >> >> This seemed like a decent use of MirroredQueues (since they >> evidently create >> a “topic” that can be used as a wire-tap), but evidently by setting >> BrokerService.setUseMirroredQueues(true) on the broker for Project >> “A”, >> we’ve introduced a rather large memory leak. >> >> The objects that appear to grow in number are: >> org.apache.activemq.store.memory.MemoryTransactionStore$2 >> org.apache.activemq.store.memory.MemoryTopicMessageStore >> org.apache.activemq.command.ActiveMQTopic >> >> This seems to suggest the mirrored messages are being retained, but >> the >> Broker has setPersistent(false) specified and I don’t see any way to >> set >> Time to Live, or any other way for the Broker to monitor and remove if >> necessary on the Mirrored Queue only, etc.. If I look at the queues >> via >> jConsole MBeans, I can see the >> Topic.VirtualTopic.Mirror.DacIncomingQueue >> with attributes showing that the messages are only being enqueue and >> not >> dequeued. I really want the Broker to drop these messages if >> Application >> “B” is not there to dequeue them. >> >> Is it recommended that we use MirroredQueues to do this? If so, >> what’s the >> best way to set things up so I don’t have a memory problem if the >> other >> application is not listening to the mirroredQueue? … and if not, we >> would >> appreciate any other suggestions. >> >> ---- For attached Example Code---- >> The code attached is a simplified version of our Project “A” only and >> represents the case where Project “B” is not online (and not >> included in >> this example at all in fact) … it does show our use of Spring >> Templates to >> set up the Broker (and the producer and consumer clients). I’ve >> tried to >> remove quite a bit of the extraneous stuff to try to get it down to >> the >> basic problem, but I apologize that it still has a bit of fluff. >> I’ve also >> arranged things such that the broker is in a separate JVM to more >> easily see >> the memory growth of this component. The BrokerService is specified >> in the >> jms.broker.BrokerBean class. >> >> For the attached code and the 8MB specified for the JVM, we get >> about 3542 >> messages before the broker dies with an OutOfMemoryError >> >> I’ve also noticed that there is a >> BrokerService.setUseTempMirroredQueue() >> method and wonder if that is more appropriate for my use since it >> implies >> that the Mirrored Queue will be temporary, but the JavaDoc for this >> message >> is empty and I’ve seen nothing on the forums as to its >> characteristics and >> proper use. When I do use the Temporary Mirrored Queues, I also >> don’t see >> the same Virtual Topic that should be created that I see with the >> regular >> MirroredQueue topic (i.e. I don’t see VirtualTopic.Mirror.Foo.Bar >> being >> created for a queue of Foo.Bar), so this doesn’t seem to fit our >> needs. >> >> If you want to run the code, run jms-broker first, then run jms-client >> (client contains both a message producer and consumer). There is a >> README.txt file in the top level directory of each application for >> build and >> execution instructions. >> >> Using ActiveMQ 5.2.0 and Spring 2.5.4 on a Windows XP SP2 platform >> (but >> we’ve seen this on unix platforms as well) and I’ve been using >> jconsole, and >> jvisualvm to monitor memory growth and queues >> >> http://www.nabble.com/file/p22688889/jmsMirroredQueueExample.zip >> jmsMirroredQueueExample.zip >> -- >> View this message in context: >> http://www.nabble.com/Use-of-MirroredQueues-results-in-OutOfMemoryError-tp22688889p22688889.html >> Sent from the ActiveMQ - User mailing list archive at Nabble.com. >> > > --- > Mit freundlichen Grüssen - Kind Regards > Andreas Gies > Principal Consultant > Open Source Center of Competence > > Progress Software GmbH > Agrippinawerft 26 > 50678 Köln > > E-Mail [email protected] > Direct Line +49 (0)9953 980349 > Mobile +49 (0)170 5759611 > Skype +44 (0)20 3239 2922 > Skype +353 (0)1 443 4971 > Skype +1 (0)781 262 0168 > > http://www.progress.com > http://fusesource.com > http://open-source-adventures.blogspot.com > > > > ------------------------------------------------------- > Progress Software GmbH > Sitz der Gesellschaft: Agrippinawerft 26, 50678 Koeln; > Niederlassung: Fuerstenrieder Str. 279, 81377 Muenchen > Amtsgericht Koeln, HRB 15620; > Geschaeftsfuehrung: David Ireland > ------------------------------------------------------- > > -- View this message in context: http://www.nabble.com/Use-of-MirroredQueues-results-in-OutOfMemoryError-tp22688889p22702274.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.
