You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Gary Tully (JIRA)" <ji...@apache.org> on 2010/04/01 12:17:08 UTC
[jira] Resolved: (AMQ-2680) Producer Flow Control seems to be
broken
[ https://issues.apache.org/activemq/browse/AMQ-2680?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Gary Tully resolved AMQ-2680.
-----------------------------
Resolution: Working as Designed
Fix Version/s: 5.3.1
The key is understanding how the store is reclaimed, it depends on a data fixe being unreferenced. In essence this means there needs to be more than one data file in operation. For the amq store, more than 2 when a store limit is reached.
> Producer Flow Control seems to be broken
> ----------------------------------------
>
> Key: AMQ-2680
> URL: https://issues.apache.org/activemq/browse/AMQ-2680
> Project: ActiveMQ
> Issue Type: Bug
> Components: Broker, Documentation
> Affects Versions: 5.3.1
> Environment: SLES 11, IBM JDK 1.6
> Reporter: Marc Schöchlin
> Assignee: Gary Tully
> Priority: Critical
> Fix For: 5.3.1
>
> Attachments: activemq.xml
>
>
> How to reproduce:
> - Download ActiveMQ 5.3.1
> - Start broker with the attached configuration
> ---
> <systemUsage>
> <systemUsage>
> <memoryUsage>
> <memoryUsage limit="10 mb"/>
> </memoryUsage>
> <storeUsage>
> <storeUsage limit="10 mb" name="queue/RemoteQ"/>
> </storeUsage>
> <tempUsage>
> <tempUsage limit="3 gb"/>
> </tempUsage>
> </systemUsage>
> </systemUsage>
> ---
> - Start example producer/consumer
> cd examples
> ant producer -Durl=tcp://127.0.0.1:61616 -Dmax=100000 -Dsubject=queue/RemoteQ -Ddurable=true -DsleepTime=2
> sleep 600
> ant consumer -Durl=tcp://127.0.0.1:61616 -Dsubject=queue/RemoteQ -Dmax=100000 -DsleepTime=2
> The problem:
> When the 10mb limit is reached, the producer is blocked forever.
> The expected behavior is, that if a consumer cleans the queue, producers are able to post more messages.
> Neither cleaning up the queue, restarting producers and restarting the broker helps :-(
> It would be also a good idea to enhance the documentation about producer-flow-control:
> (http://activemq.apache.org/producer-flow-control.html)
> - expected behavior
> - what is limited in detail by using system|store|tempUsage
> The entire configuration :
> ---
> <beans
> xmlns="http://www.springframework.org/schema/beans"
> xmlns:amq="http://activemq.apache.org/schema/core"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
> http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">
> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
> <property name="locations">
> <value>file:${activemq.base}/conf/credentials.properties</value>
> </property>
> </bean>
> <broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}/data" >
> <destinationPolicy>
> <policyMap>
> <policyEntries>
> <policyEntry topic=">" producerFlowControl="true" memoryLimit="10mb">
> <deadLetterStrategy>
> <!--
> Use the prefix 'DLQ.' for the destination name, and make
> the DLQ a queue rather than a topic
> -->
> <individualDeadLetterStrategy
> queuePrefix="DLQ." useQueueForQueueMessages="true" />
> </deadLetterStrategy>
> <pendingSubscriberPolicy>
> <vmCursor />
> </pendingSubscriberPolicy>
> </policyEntry>
> <policyEntry queue=">" producerFlowControl="true" memoryLimit="10mb">
> <!-- Use VM cursor for better latency
> For more information, see:
>
> http://activemq.apache.org/message-cursors.html
>
> <pendingQueuePolicy>
> <vmQueueCursor/>
> </pendingQueuePolicy>
> -->
> <deadLetterStrategy>
> <!--
> Use the prefix 'DLQ.' for the destination name, and make
> the DLQ a queue rather than a topic
> -->
> <individualDeadLetterStrategy
> queuePrefix="DLQ." useQueueForQueueMessages="true" />
> </deadLetterStrategy>
> </policyEntry>
> </policyEntries>
> </policyMap>
> </destinationPolicy>
>
> <systemUsage>
> <systemUsage>
> <memoryUsage>
> <memoryUsage limit="10 mb"/>
> </memoryUsage>
> <storeUsage>
> <storeUsage limit="10 mb" name="queue/RemoteQ"/>
> </storeUsage>
> <tempUsage>
> <tempUsage limit="3 gb"/>
> </tempUsage>
> </systemUsage>
> </systemUsage>
>
> <transportConnectors>
> <transportConnector name="openwire" uri="tcp://0.0.0.0:61616"/>
> </transportConnectors>
> </broker>
> <import resource="jetty.xml"/>
>
> </beans>
> ---
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.