activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Timothy Bish (JIRA)" <j...@apache.org>
Subject [jira] [Resolved] (AMQ-3669) Pending producer with qMirror, messages are not spooled to disk
Date Wed, 23 May 2012 20:29:41 GMT

     [ https://issues.apache.org/jira/browse/AMQ-3669?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Timothy Bish resolved AMQ-3669.
-------------------------------

       Resolution: Fixed
    Fix Version/s: 5.7.0

Patch applied with thanks. 
                
> Pending producer with qMirror, messages are not spooled to disk
> ---------------------------------------------------------------
>
>                 Key: AMQ-3669
>                 URL: https://issues.apache.org/jira/browse/AMQ-3669
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker, Message Store
>    Affects Versions: 5.5.1
>         Environment: local test on windows, happens also on linux remotely
>            Reporter: Darius Schier
>             Fix For: 5.7.0
>
>         Attachments: mirroredqueue.diffs
>
>
> We fill a queue that is backed by a qmirror with data (persistent) that exceeds the configured
memory limit.
> The producer (producerFlowControl="true" at queue and qmirror) will be throttled when
the the limit is reached, no messages are spooled to disk.
> As an overall result, we are not able to write a lot of messages into amq.
> *Configuration:*
> {code:xml} 
> 	<destinationInterceptors>
> 		<mirroredQueue copyMessage = "true" postfix=".qmirror" prefix=""/>
> 	</destinationInterceptors>
> 	<destinationPolicy>
> 		<policyMap>
> 		  <policyEntries>
> 			<policyEntry topic=">" producerFlowControl="true" memoryLimit="2mb" />
> 			<policyEntry queue="created.static.for.persistent" producerFlowControl="true" memoryLimit="1mb"
/>
> 		  </policyEntries>
> 		</policyMap>
> 	</destinationPolicy> 
> 	<destinations>
> 		<queue physicalName="created.static.for.persistent" />
> 	</destinations>
> 	<persistenceAdapter>
> 		<kahaDB directory="${activemq.base}/data/kahadb"/>
> 	</persistenceAdapter>
> 	
> 	<systemUsage>
> 		<systemUsage>
> 			<memoryUsage><memoryUsage limit="10 mb" /></memoryUsage>
> 			<storeUsage><storeUsage limit="100 mb"/></storeUsage>
> 			<tempUsage><tempUsage limit="100 mb"/></tempUsage>
> 		</systemUsage>
> 	</systemUsage>
> 	
> 	<transportConnectors>
> 		<transportConnector name="openwire" uri="tcp://0.0.0.0:61616"/>
> 	</transportConnectors>
>  {code}
> *Java test code:*
> {code} 
>     ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");
>     Connection connection = factory.createConnection("user", "pwd");
>     connection.start();
>     Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
>     Destination destination = session.createQueue("created.static.for.persistent");
>     MessageProducer producer = session.createProducer(destination);
>     producer.setDeliveryMode(DeliveryMode.PERSISTENT);
>     char[] m = new char[1024];
>     Arrays.fill(m, 'x');
>     // create some messages that have 1k each
>     for (int i = 0; i < 12000; i++) {
>       ActiveMQTextMessage message = new ActiveMQTextMessage();
>       message.setText(new String(m));
>       producer.send(message);
>     }
>     connection.stop();
>     connection.close();
>   }
> {code} 
> *Expectation:*
> Messages should be written to disk when the memory limit exceeds, all messages should
be available within the queue/topic.
> *Result:*
>  INFO | Usage Manager memory limit (2097152) reached for topic://created.static.for.persistent.qmirror.
Producers will be throttled to the rate at which messages are removed from this destination
to prevent flooding it. See http://activemq.apache.org/producer-flow-control.html for more
info
> Store percent used  : 10 
> Memory percent used : 20
> Temp percent used   : 0
> Interesting: The smaller flow control for the queue (1mb) does not seem to catch but
the qmirror does (2mb).

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message