Producer block when queue memory limit is setted to 5Mb and no consumer is
actived
----------------------------------------------------------------------------------
Key: AMQ-1868
URL: https://issues.apache.org/activemq/browse/AMQ-1868
Project: ActiveMQ
Issue Type: Bug
Components: Broker
Affects Versions: 5.1.0
Environment: Unix, jdk 1.5.0_12, AMQ 5.1.0
Reporter: Alessandro Zanfardino
Attachments: activemq.xml, AMQTester.zip
Hallo
I'm using the attached source code to test AMQ 5.1.0
I'm using following setting:
//SESSION
ackMode = Session.AUTO_ACKNOWLEDGE;
//FACTORY
dispatchAsync = true;
useAsyncSend = false;
//PRODUCERS
DelveryMode=Pesrsistent
timeToLive = 21600000; //6h
If I use the following configuration in activemq.xml:
<memoryUsage limit="20 mb"/>
<policyEntry queue=">" memoryLimit="5mb"/>
I noted this behaviour:
if producer starts a loop of sendMessage on a queue where no consumer is
listen, after N messages, when the 5Mb are full, producer is blocked.
Block ends when some consumer registers a listener on this queue and start to
conuming messages.
If I change the configuration, removing queue memory limit like below:
<memoryUsage limit="20 mb"/>
<policyEntry queue=">" />
and producer starts a loop of sendMessage on a queue where no consumer is
listen, producer is NEVER blocked.
Memory usage percentage go up until 90% and then remains steady, but
producer continues to send.
I expected this same behaviour when queue memory limit was 5Mb, also.
Further, I set values for queue memory limit higher than 5Mb and repeated
the test :
memoryLimit="10 mb" => producer was blocked
memoryLimit="18 mb" (=90% of 20Mb) => producer was blocked
memoryLimit="19 mb" ( >90% of 20Mb) => producer NEVER blocked
I expected that producer NEVER blocked in every cases.
Please can you help me for this issue?
Feel free to ask me other details.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.