I've been trying to get the AMQ 5.1.0 Broker to work with our Spring-based
application. When subjected to a load of 12 messages/sec (nothing significant
just something I used for load testing) the AMQ Broker actually stops receiving
and distributing messages (but /admin was responsive though.) After restarting
the AMQ Broker the producers and consumers started working again. Take note
that the producers and consumers were NOT restarted.
I also tried the following to no avail:
* set jms.prefetchPolicy.queuePrefetch=1
* with out failover protocol
* AMQ 5.0.0 client with AMQ 5.1.0 broker
* no parameters in the URL
I initially thought that it might be related to AMQ-1927 but my AMQ broker
already had producerFlowControl set to false.
https://issues.apache.org/activemq/browse/AMQ-1927
Configuration:
* Centos (kernel 2.6.18-92)
* Java 1.6.0_05
* ActiveMQ 5.1.0 (java -Xmx256m -Xss128k -Xms128m
-Dorg.apache.activemq.UseDedicatedTaskRunner=true)
* Spring 2.5.5
* Camel 1.3.0
* JMeter (load produces messages to 3 queue with throughput of 10/sec,
1/sec, and 1/sec.)
AMQ URL used by producer:
failover:(tcp://host1.internal:12345)?jms.prefetchPolicy.queuePrefetch=1&jms.redeliveryPolicy.allPrefetchValues=1&jms.redeliveryPolicy.initialRedeliveryDelay=2000&jms.redeliveryPoli
cy.maximumRedeliveries=24&jms.redeliveryPolicy.useCollisionAvoidance=true
In activemq.xml:
<broker>
<!-- Destination specific policies using destination names or wildcards -->
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry topic=">" producerFlowControl="false" memoryLimit="1mb">
<dispatchPolicy>
<strictOrderDispatchPolicy />
</dispatchPolicy>
<subscriptionRecoveryPolicy>
<lastImageSubscriptionRecoveryPolicy />
</subscriptionRecoveryPolicy>
</policyEntry>
<policyEntry queue=">">
<dispatchPolicy>
<strictOrderDispatchPolicy />
</dispatchPolicy>
<subscriptionRecoveryPolicy>
<lastImageSubscriptionRecoveryPolicy />
</subscriptionRecoveryPolicy>
<deadLetterStrategy>
<individualDeadLetterStrategy queuePrefix="DLQ."
useQueueForQueueMessages="true"/>
</deadLetterStrategy>
</policyEntry>
</policyEntries>
</policyMap>
</destinationPolicy>
<!-- The transport connectors ActiveMQ will listen to -->
<transportConnectors>
<transportConnector name="openwire" uri="tcp://host1.internal:12345" />
</transportConnectors>
<!-- Use the following to set the broker memory limit -->
<systemUsage>
<systemUsage>
<memoryUsage>
<memoryUsage limit="64 mb" percentUsageMinDelta="20" />
</memoryUsage>
<tempUsage>
<tempUsage limit="100 mb" />
</tempUsage>
<storeUsage>
<storeUsage limit="1 g" name="host1.internal" />
</storeUsage>
</systemUsage>
</systemUsage>
<!-- Use the following to configure how ActiveMQ is exposed in JMX -->
<managementContext>
<managementContext connectorPort="56789" jmxDomainName="org.apache.activemq" />
</managementContext>
</broker>
...
Thread blocked in the producer side:
"resin-tcp-connection-*:6102-9" daemon prio=10 tid=0xa7a5d400 nid=0x6946
waiting on condition [0xa68b5000..0xa68b7130]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
* parking to wait for <0xb0b3d848> (a
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1925)
at
java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:317)
Do you guys see any issue with my configuration?
I'd appreciate any information.
Thanks,
Jeff
Privileged/Confidential Information may be contained in this message. If you
are not the addressee indicated in this message (or responsible for delivery of
the message to such person), you may not copy or deliver this message to
anyone. In such case, you should destroy this message and kindly notify the
sender by reply email. Please advise immediately if you or your employer does
not consent to Internet email for messages of this kind. Opinions, conclusions
and other information in this message that do not relate to the official
business of my firm shall be understood as neither given nor endorsed by it.