Looks like you have multiple threads concurrently sending messages
using only 1 session.  The JMS spec explicitly states that this is not
allowed.  Sessions should only be used by 1 thread at a time.

On Tue, May 13, 2008 at 1:45 PM, jaya_srini <[EMAIL PROTECTED]> wrote:
>
> 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.
>
>



-- 
Regards,
Hiram

Blog: http://hiramchirino.com

Open Source SOA
http://open.iona.com

Reply via email to