I have a question about activemq: 
I tried setting the destination limit low and the system limit high, with
the following config 
       <destinationPolicy>
            <policyMap>
                <policyEntries>
                    <policyEntry queue=">" memoryLimit="1kb"/>
                    <policyEntry topic=">" memoryLimit="1kb">
                    </policyEntry>
                </policyEntries>
            </policyMap>
        </destinationPolicy>
        <persistenceAdapter>
            <jdbcPersistenceAdapter dataSource="#derby-ds"/>
        </persistenceAdapter>
        <systemUsage>
            <systemUsage>
                <memoryUsage>
                    <memoryUsage limit="10kb"/>
                </memoryUsage>
            </systemUsage>
        </systemUsage>
When I'm trying to send 10 non-persistent messages with 1k for each message
to a queue named "TEST.FOO", my producer blocks after sending 2 messages. 
If I set the system limit equal to destination limit, my producer won't
block and send 10 messages. 

I was browsing the source code, it seems BaseDestination uses two
memoryUsage. When BaseDestination.memoryUsage reaches its limit, the queue
does not send an ack back to producer and producer blocks. When
BaseDestination.systemUsage.memoryUsage reaches its limit, FilePendingCursor
would flush the messages to disk and reduce memory usage. Is it right?
-- 
View this message in context: 
http://www.nabble.com/memoryUsage-configuration-tp20416088p20416088.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to