activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Marc Schöchlin (JIRA) <j...@apache.org>
Subject [jira] Created: (AMQ-2680) Producer Flow Control seems to be broken
Date Tue, 30 Mar 2010 08:49:08 GMT
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
            Priority: Critical


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.


Mime
View raw message