I was able to avoid the problem by setting pubSubNoLocal on my consumer to false. Presto, the topics no longer leak memory.
It was and is using AUTO_ACK. I'm using a Spring SimpleMessageListenerContainer on the consumer side, but a client using raw JMS primitives behaves the same way. Aaron Pieper posted a message yesterday in another thread that gives more details, but the nutshell version is that the topic only starts to accumulate memory if there is a consumer on it via TCP transport, and that consumer has pubSubNoLocal set to true, and the sender is a Spring JMSTemplate. A producer that uses raw JMS primitives didn't cause the memory leak. Anyway, setting pubSubNoLocal false is sufficient and we don't need it set otherwise, so we're past this problem. Thanks to all for the advice! Dave Stanley wrote: > > I'm not sure if it will help, but you could try disabling producer > flowControl: > > <policyEntry topic=">" memoryLimit="5mb" producerFlowControl="false"> > <dispatchPolicy> > <strictOrderDispatchPolicy/> > </dispatchPolicy> > <subscriptionRecoveryPolicy> > <noSubscriptionRecoveryPolicy/> > </subscriptionRecoveryPolicy> > </policyEntry> > </policyEntries> > > It would also be interesting to know what ack mode your clients are using > to > ACK their messages. Are you using CLIENT_ACK or AUTO_ACK? > > If its easy to do, it might be worth running your test with a java > consumer > and see if you see the same behaviour. This might allow you to narrow it > down to a problem on the consumer side. > > Regards, > /Dave > > -- View this message in context: http://www.nabble.com/QueueSize-and-InFlightCount-on-a-Topic-keeps-growing-tp18446149p18836261.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.