We are using an embedded broker producing non persistent messages.  The
producer is quite fast and the consumers are usually able to keep up. 
Sometimes, a consumer may slow down, and we would like to try ensure that
the producer isn't told to slow down if the broker fills up with messages. 
\http://activemq.apache.org/message-cursors.html says the store based cursor
has an embedded file cursor.  Our understanding is that the broker should
queue messages in memory until it reaches the watermark (70%) and then start
queue messages in the store or temp.  Once the store has been filled, then
it should slow down the producer.  Unfortunately, we aren't seeing that
behavior.  The queue just fills up in memory until it reaches its limit and
it starts slowing / blocking the producer.  How do we get an embedded broker
to store non-persistent messages to disk when memory fills up?  Should we be
attacking this problem with a different configuration?  Our broker
configuration is below.  Thanks for the help

Active MQ 5.3.1
Java 1.6

broker = new BrokerService();
broker.setPersistent( false );
broker.addConnector( "tcp://0.0.0.0:61616" );

PolicyEntry policyEntry = new PolicyEntry();
policyEntry.setQueue( ">" );
policyEntry.setProducerFlowControl( true );

PolicyMap policyMap = new PolicyMap();
policyMap.setDefaultEntry( policyEntry );
broker.setDestinationPolicy( policyMap );

SystemUsage systemUsage = broker.getSystemUsage();
systemUsage.setSendFailIfNoSpace( true );
systemUsage.getMemoryUsage().setLimit( 1024 * BYTES_IN_MEG );
systemUsage.getStoreUsage().setLimit( 1024 * BYTES_IN_MEG );
systemUsage.getTempStorage().setLimit( 1024 * BYTES_IN_MEG );

--
View this message in context: 
http://activemq.2283324.n4.nabble.com/Embedded-broker-non-persistent-messages-and-store-based-cursor-tp4461429p4461429.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to