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.
|