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

Reply via email to