thanks for the response, Filip! Thread dump below is what we got on the client side. I'll try and see if I can get a better dump. So what would be the resolution for this? Will enabling the jms.useAsyncSend property on the connection URI help fix this i.e cause the send to be asynchronous so that it doesn't block?
daemon prio=6 tid=0x3793f400 nid=0x1f28 waiting for monitor entry [0x38aff000..0x38affc98] java.lang.Thread.State: BLOCKED (on object monitor) at org.apache.activemq.ActiveMQSession.send(ActiveMQSession.java:1587) - waiting to lock <0x07c45ea0> (a java.lang.Object) at org.apache.activemq.ActiveMQMessageProducer.send(ActiveMQMessageProducer.java:226) at org.apache.activemq.ActiveMQMessageProducerSupport.send(ActiveMQMessageProducerSupport.java:268) at org.apache.activemq.ActiveMQTopicPublisher.publish(ActiveMQTopicPublisher.java:146) Filip Hanik - Dev Lists wrote: > > as I mentioned, the blocking happens on the mutex for an > ActiveMQSession, the only way you can end up blocking two threads there, > is if two threads are using the same session, > > can you post the complete thread dump? > > thanks > Filip > > jaya_srini wrote: >> So Sorry! :( >> >> I just thought I would explain our scenario in more details. >> >> >> jaya_srini wrote: >> >>> Hello >>> >>> Apologies for all the questions but I am a newbie to ActiveMQ and I >>> would >>> really like to better understand how the ActiveMQ broker works and was >>> wondering if someone can explain how it would work for the scenario >>> below: >>> >>> I am using single session with 1 producer and 1 consumer (durable Topic >>> subscrber) for producing and consuming messages i.e the same session >>> produces and consumes messages. The session/producer/consumer are >>> created >>> in app startup once and are reused through out. >>> >>> There is a message listener on the consumer for receiving messages >>> asynchrounously. >>> >>> Messages are persistent (written to the database) and we are using the >>> Publish-Subscribe model. >>> >>> The client APP (that send and receives the message) and the ActiveMQ >>> broker are on different machines so I use a TCP transport to establish >>> connection with a failover protocol so the connection URI looks like >>> below >>> >>> failover:(tcp://<broker_ip>:61616/) >>> >>> We are using ActiveMq 5.0.0 >>> >>> Given the above info, what is the number of threads created on the >>> broker >>> side for sending and dispatching. Will the send and dispatch be >>> synchronous by default for the above? >>> >>> If I make the connection URI to be as follows >>> >>> tcp://<broker_ip>:61616?jms.useAsyncSend=true&jms.dispatchAsync=true >>> >>> will this cause the send and dispatch to be asynchronous? >>> >>> We are having some porblem with producer bloacking on >>> ActiveMQSession.send() with our current set up and I would like to >>> really >>> understand what's happening to be able to resolve this. >>> >>> thank you! >>> jaya >>> >>> >> >> > > > -- View this message in context: http://www.nabble.com/Question-about-Producer-Consumer-usage-tp17170621s2354p17214415.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.