You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Jeff Goot (JIRA)" <ji...@apache.org> on 2008/12/02 08:48:05 UTC
[jira] Commented: (AMQ-1927) activemq producer hangs (using spring)
[ https://issues.apache.org/activemq/browse/AMQ-1927?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=47773#action_47773 ]
Jeff Goot commented on AMQ-1927:
--------------------------------
I've been trying to get the AMQ 5.1.0 Broker to work with our Spring-based application. I'm seeing the same behavior as Juliano was seeing but it didn't work for me when I set processFlowControl to "false". (See my activemq.xml file below.) The AMQ Broker actually stopped 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
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>
...
Do you guys see any issue with my configuration?
I'd appreciate any information.
Thanks,
Jeff
> activemq producer hangs (using spring)
> --------------------------------------
>
> Key: AMQ-1927
> URL: https://issues.apache.org/activemq/browse/AMQ-1927
> Project: ActiveMQ
> Issue Type: Bug
> Components: Broker
> Affects Versions: 5.1.0
> Environment: suse linux 10.3
> sun jdk "1.6.0_06"
> tomcat 6.0.16
> spring framework 2.0
> Reporter: Randy
> Fix For: 5.3.0
>
>
> We have an internal activemq queue configured using the spring framework (configuration below). During a high volume message test, the message producer hangs. See stack trace below.
> May be related to bugs #AMQ-1641 or #AMQ-1490.
> "pool-2-thread-2" prio=10 tid=0x00002aaaf2c20000 nid=0x297e waiting on condition [0x000000004173f000..0x000000004173fc20]
> java.lang.Thread.State: WAITING (parking)
> at sun.misc.Unsafe.park(Native Method)
> - parking to wait for <0x00002aaae859af40> (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)
> at org.apache.activemq.transport.FutureResponse.getResult(FutureResponse.java:40)
> at org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:80)
> at org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1195)
> at org.apache.activemq.ActiveMQSession.send(ActiveMQSession.java:1644)
> - locked <0x00002aaab3e433d8> (a java.lang.Object)
> at org.apache.activemq.ActiveMQMessageProducer.send(ActiveMQMessageProducer.java:227)
> at org.apache.activemq.pool.PooledProducer.send(PooledProducer.java:74)
> - locked <0x00002aaab3e42d08> (a org.apache.activemq.ActiveMQMessageProducer)
> at org.apache.activemq.pool.PooledProducer.send(PooledProducer.java:59)
> at org.springframework.jms.core.JmsTemplate.doSend(JmsTemplate.java:534)
> at org.springframework.jms.core.JmsTemplate.doSend(JmsTemplate.java:511)
> at org.springframework.jms.core.JmsTemplate$2.doInJms(JmsTemplate.java:477)
> at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:428)
> at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:475)
> <amq:broker id="broker" useJmx="true" persistent="false" brokerName="fb" >
>
> <amq:managementContext>
> <amq:managementContext connectorPort="2011" jmxDomainName="org.apache.activemq"/>
> </amq:managementContext>
> <amq:transportConnectors>
> <amq:transportConnector uri="tcp://localhost:0" />
> <amq:transportConnector uri="tcp://localhost:61616" />
> </amq:transportConnectors>
> </amq:broker>
> <!-- ActiveMQ destinations to use -->
> <amq:queue id="inboundEvents" physicalName="fb.inbound.events">
> </amq:queue>
>
> <bean id="jmsFactory" class="org.apache.activemq.pool.PooledConnectionFactory">
> <property name="connectionFactory">
> <bean class="org.apache.activemq.ActiveMQConnectionFactory">
> <property name="brokerURL" value="vm://localhost"/>
> </bean>
> </property>
> </bean>
> <bean id="simpleJmsTemplate" class="org.springframework.jms.core.JmsTemplate">
> <property name="connectionFactory" ref="jmsFactory"/>
> </bean>
> <!-- consumers -->
> <bean id="inboundEventConsumer" class="jms.WrapperConsumer" init-method="start" destroy-method="stop">
> <property name="myId" value="fb.consumer.events"/>
> <property name="template" ref="simpleJmsTemplate"/>
> <property name="destination" ref="inboundEvents"/>
> </bean>
> <!-- producers -->
> <bean id="inboundEventProducer" class="jms.WrapperProducer">
> <property name="template" ref="simpleJmsTemplate"/>
> <property name="destination" ref="inboundEvents"/>
> </bean>
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.