Hello, I'm hoping that someone would be able to help me understand why I am
having an issue with my applications usage of ActiveMQ under flow control
situations.  I'm using 2 ActiveMQ 5.4.3 brokers using Open JDK 1.6,
configured with 5 queues each.  I have 2 applications in separate JVMs
connecting to each broker independently (app1 connects to broker1 & broker2)
and (app2 connects to broker2).  app1 pushes messages to 1 or more queues on
broker2 using the broker2's nio URI.  app2 reads and processes those
messages on broker2.  All works well, until broker's 1 & 2 memory usage
reaches 100% (as observed by the admin UI).  Then app1's connection to
broker2 is placed in flow control as expected.  The weird part is that app2
is no longer able to read any messages from broker2 which is very
unexpected.  If I understand correctly, producer flow control is only
suppose to slow down the producers from app1's connection to broker2, and
not app2's connection to broker2?  If this is true, is there a known bug
with the version of ActiveMQ I'm using or have I mis-configured the broker? 
Below is the config used for both brokers, and each is running on 2 separate
EC2 instances with 7GB of memory.  Any help will be greatly appreciated.

Thanks
<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";>

    <broker
        xmlns="http://activemq.apache.org/schema/core";
        brokerName="localhost"
        dataDirectory="/usr/data/activemq"
        destroyApplicationContextOnStop="true"
        persistent="true">
 
        <destinationPolicy>
            <policyMap>
                <policyEntries>
                    <policyEntry topic=">" producerFlowControl="true">
                        <pendingSubscriberPolicy>
                        </pendingSubscriberPolicy>
                    </policyEntry>
                    <policyEntry queue=">" producerFlowControl="true">
                        <pendingQueuePolicy>
                        </pendingQueuePolicy>
                    </policyEntry>
                </policyEntries>
            </policyMap>
        </destinationPolicy> 

        <managementContext>
            <managementContext createConnector="true" rmiServerPort="61516"
/>
        </managementContext>

        <persistenceAdapter>
            <kahaDB
                directory="/usr/data/activemq/kahadb"
                enableJournalDiskSyncs="false"
                indexWriteBatchSize="10000"
                indexCacheSize="1000"
            />
        </persistenceAdapter>
        
        <systemUsage>
            <systemUsage sendFailIfNoSpaceAfterTimeout="5000">
                <memoryUsage>
                    <memoryUsage limit="4096 mb"/>
                </memoryUsage>
                <storeUsage>
                    <storeUsage limit="10240 mb"/>
                </storeUsage>
                <tempUsage>
                    <tempUsage limit="100 mb"/>
                </tempUsage>
            </systemUsage>
        </systemUsage>
                  
       <sslContext>
                <sslContext keyStore="keystore" keyStorePassword="abcd1234"
trustStore="truststore" trustStorePassword="efgh5678"/>
       </sslContext>
        <transportConnectors>
            <transportConnector name="ssl" uri="ssl://0.0.0.0:61616"/>
            <transportConnector name="nio" uri="nio://0.0.0.0:61617"/>
        </transportConnectors>

    </broker>

    
    <import resource="jetty.xml"/>
    
</beans>



--
View this message in context: 
http://activemq.2283324.n4.nabble.com/Help-with-a-producer-consumer-stall-problem-after-reaching-flow-control-tp4670034.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to