I am finally have flow control working, the main problem was that I did not
setup my topic consumer prefetch size. and since the default prefetch size
for topic is 1000 multiply  1M per message, all messages goes to consumer
dispatch queue and blow up there. The broker never had no chance to do any
flow control.

I now set prefetch size to a much smaller number ( 10 ), most of messages
are stuck in broker, this is where broker can do its job to throttle the
producer to slow down.

Nothing is better than hand on experience.

Sorry for all the noise.

-D

Mine, 

Dan Tran wrote:
> 
> 
> Here are some more info for one producer one consumer testing
> 
> message size = 1M
> producerWindowSize=10m
> memoryLimit=10M per topic
> memoryUsage=200M
> 
> it seems like memoryLimit and memoryUsage and producerWindowSize  are
> ignored.  My inflightCount keeps going up  ( ie my heap memory grow until
> OOM )
> 
> Any suggestion?
> 
> Thanks
> 
> -Dan
> 
> 
> 
> 
> Dan Tran wrote:
>> 
>> 
>> Hello,  I am testing the producer flow control of activemq for both 5.2
>> and 5.3-RC2.   In my test bed, I have a number of producer an consumer
>> topic working in pair.  When I have multiple pairs running at the same
>> time where the producers are out pacing the consumers, the flow control
>> feature works ( otherwise, I will get OOM )
>> 
>> However, when I run only one pair, i will get OOM.  Does some one see
>> what I see?  is there a way for me to find out if producer flow control
>> is triggered?
>> 
>> here is my configuration, using only non persistent message
>> 
>>   <!--  lets create an embedded ActiveMQ Broker -->
>>   <amq:broker useJmx="true" persistent="false" advisorySupport="false">
>> 
>>     <!-- Destination specific policies using destination names or
>> wildcards -->
>> 
>>     <amq:destinationPolicy>
>>       <amq:policyMap>
>>         <amq:policyEntries>
>>           <amq:policyEntry topic=">"  producerFlowControl="true"
>> memoryLimit="${fdb.broker.agent.memoryLimit} mb" />
>>         </amq:policyEntries>
>>       </amq:policyMap>
>>     </amq:destinationPolicy>
>> 
>>     <amq:sslContext>
>>       <amq:sslContext
>> keyStore="file:${FORTIDB_HOME}/conf/.jmsBrokerKeyStore"
>> keyStorePassword="${fdb.broker.keyStorePassword}" />
>>     </amq:sslContext>
>> 
>>     <!--  The maximum about of space the broker will use before slowing
>> down producers -->
>>     <amq:systemUsage>
>>       <amq:systemUsage>
>>         <amq:memoryUsage>
>>           <amq:memoryUsage limit="${fdb.broker.memoryUsage} mb" />
>>         </amq:memoryUsage>
>>       </amq:systemUsage>
>>     </amq:systemUsage>
>>     
>>     <amq:transportConnectors>
>>       <amq:transportConnector
>> uri="${fdb.broker.protocol}://0.0.0.0:${fdb.broker.port}" />
>>     </amq:transportConnectors>
>> 
>> 
>>   </amq:broker>
>> 
>> 
>> Any advice is greatly appreciated
>> 
>> -Dan
>> 
>> 
>> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Producer-flow-control-not-working-when-there-is-only-one-pair-tp25691909p25712077.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to