activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ashok (JIRA)" <j...@apache.org>
Subject [jira] Updated: (AMQ-2167) ActiveMQ producer/consumer hangs when one of the consumer didn't respond
Date Thu, 19 Mar 2009 03:00:43 GMT

     [ https://issues.apache.org/activemq/browse/AMQ-2167?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Ashok updated AMQ-2167:
-----------------------

    Summary: ActiveMQ producer/consumer hangs when one of the consumer didn't respond  (was:
ActiveMQ producer/consumer hangs when on of the consumer didn't respond)

> ActiveMQ producer/consumer hangs when one of the consumer didn't respond
> ------------------------------------------------------------------------
>
>                 Key: AMQ-2167
>                 URL: https://issues.apache.org/activemq/browse/AMQ-2167
>             Project: ActiveMQ
>          Issue Type: Bug
>            Reporter: Ashok
>            Priority: Blocker
>         Attachments: Thread Dump for ActiveMQ_2.tdump
>
>
> We are using ActiveMQ 5.2 & Spring 2.5.4...
> We are using ActiveMQ Embeeded broker 
> <bean id="jmsFactory" class="org.apache.activemq.pool.PooledConnectionFactory" destroy-method="stop">
>     <property name="connectionFactory">
>       <bean class="org.apache.activemq.ActiveMQConnectionFactory">
>         <property name="brokerURL">
>           <value>vm://localhost?broker.persistent=false</value> 
>         </property>
>       </bean>
>     </property>
>   </bean>
>   
>    <bean id="destination" class=" org.apache.activemq.command.ActiveMQQueue">
>        <constructor-arg ref="jmsQueueJndiName"></constructor-arg>
>     </bean>
>   
>    
>    <bean id="calendarEventContainer" class="org.springframework.jms.listener.SimpleMessageListenerContainer"
>
>     <property name="connectionFactory" ref="jmsFactory" />
>     <property name="destination" ref="destination" />
>     <property name="messageListener" ref="calendarEventProcessor" />
>     <property name="messageSelector">
>       <util:constant static-field="com.jpmc.spex.utils.lookup.EventCategoryConstants.EVENT_CATEGORY_CALENDAR"/>
>     </property>
>   </bean>
>   
>    <bean id="runtimeEventContainer" class="org.springframework.jms.listener.SimpleMessageListenerContainer"
>
>     <property name="connectionFactory" ref="jmsFactory" />
>     <property name="destination" ref="destination" />
>     <property name="messageListener" ref="runtimeEventProcessor" />
>     <property name="messageSelector">
>       <util:constant static-field="com.jpmc.spex.utils.lookup.EventCategoryConstants.EVENT_CATEGORY_RUNTIME"/>
>     </property>
>   </bean>
>   
>    <bean id="systemEventContainer" class="org.springframework.jms.listener.SimpleMessageListenerContainer"
>
>     <property name="connectionFactory" ref="jmsFactory" />
>     <property name="destination" ref="destination" />
>     <property name="messageListener" ref="systemEventProcessor" />
>     <property name="concurrentConsumers" value="5" />
>     <property name="messageSelector">
>       <util:constant static-field="com.jpmc.spex.utils.lookup.EventCategoryConstants.EVENT_CATEGORY_SYSTEM"/>
>     </property>
>   </bean>
>   
>   <bean id="genericCalendarEventContainer" class="org.springframework.jms.listener.SimpleMessageListenerContainer"
>
>     <property name="connectionFactory" ref="jmsFactory" />
>     <property name="destination" ref="destination" />
>     <property name="messageListener" ref="genericCalendarEventProcessor" />
>     <property name="messageSelector">
>       <util:constant static-field="com.jpmc.spex.utils.lookup.EventCategoryConstants.EVENT_CATEGORY_GENERIC"/>
>     </property>
>   </bean>
>    
> We are sending the email from all these listeners after doing some logic.when something
happens in the SMTP side and if there is no response from SMTP side and if the Listener is
waiting then the entire producer/consumer is halted.
> My Question is why One Consumer  blocking all other consumer /producer. (see the stack
trace which shows one of the Consumer is waiting for some response from SMTP server).
> ActiveMQ Session Task" - Thread t@2554
>    java.lang.Thread.State: RUNNABLE
> 	at java.net.SocketInputStream.socketRead0(Native Method)
> 	at java.net.SocketInputStream.read(SocketInputStream.java:129)
> 	at com.sun.mail.util.TraceInputStream.read(TraceInputStream.java:97)
> 	at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
> 	at java.io.BufferedInputStream.read(BufferedInputStream.java:237)
> 	- locked java.io.BufferedInputStream@13a80ea
> 	at com.sun.mail.util.LineInputStream.readLine(LineInputStream.java:75)
> 	at com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:1440)
> 	at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1260)
> 	at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:370)
> 	at javax.mail.Service.connect(Service.java:275)
> 	at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:389)
> 	at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:342)
> 	at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:338)
> 	at com.jpmc.ibtech.spring.email.MimeEmailService.sendEmail(MimeEmailService.java:61)
> 	at com.jpmc.spex.background.events.processor.AbstractEventAction.sendEmail(AbstractEventAction.java:63)
> 	at com.jpmc.spex.background.events.processor.AbstractEventAction.execute(AbstractEventAction.java:79)
> 	at com.jpmc.spex.background.events.processor.system.SystemEventAction.execute(SystemEventAction.java:47)
> 	at com.jpmc.ibtech.spring.jms.EventProcessor.onMessage(EventProcessor.java:101)
> 	at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:531)
> 	at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:466)
> 	at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:435)
> 	at org.springframework.jms.listener.AbstractMessageListenerContainer.executeListener(AbstractMessageListenerContainer.java:407)
> 	at org.springframework.jms.listener.SimpleMessageListenerContainer.processMessage(SimpleMessageListenerContainer.java:290)
> 	at org.springframework.jms.listener.SimpleMessageListenerContainer$2.onMessage(SimpleMessageListenerContainer.java:266)
> 	at org.apache.activemq.ActiveMQMessageConsumer.dispatch(ActiveMQMessageConsumer.java:967)
> 	- locked java.lang.Object@1e58347
> 	at org.apache.activemq.ActiveMQSessionExecutor.dispatch(ActiveMQSessionExecutor.java:122)
> 	at org.apache.activemq.ActiveMQSessionExecutor.iterate(ActiveMQSessionExecutor.java:192)
> 	at org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:122)
> 	at org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:43)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
> 	at java.lang.Thread.run(Thread.java:619)
>    Locked ownable synchronizers:
> 	- locked java.util.concurrent.locks.ReentrantLock$NonfairSync@10dbec7
> See the attached ThreadDump which shows Producer is waiting..
> I saw that..I can enable ProduceFlowControl...I am just worried whether it will start
spilling to the disk and create more problems.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message