Hi Filip

I have 4 producers (who are also consumers) on different connections  i.e I
create a diffrent connection for each producer. But If multiple threads are
using the same producer then I can see that they might end up using the same
session.

For sending message asynchrounously, should I be using the jms.useAsyncSend
on the connection? Will this send message asynchronously if multiple threads
are using the same session?

thanks!
jaya


Filip Hanik - Dev Lists wrote:
> 
> aah, I see, the issue you are running into is a global lock on the
> session,
> only one message can be sent at a time on the same session.
> so if you have multiple threads using the same session, it will send the 
> requests, one at a time
> 
> you are probably sending messages synchronously, as opposed to async, 
> which is why you see the blocking threads
> 
> Filip
> 
> jaya_srini wrote:
>> Thanks much for the response Fillip.
>>
>> Can you explain what the producerFlowControl setting does? And what other
>> options if any I can set?
>>
>> >From activemQ admin page I see that the messages are being consumed at
>> the
>> same rate as being produced. I have 4 producers that are also consumers.
>> Currently the consumers when they receive the message just log it to a
>> log
>> file. 
>>
>>
>> Filip Hanik - Dev Lists wrote:
>>   
>>> that means youre producing messages faster than they are being consumed.
>>>
>>> you could setup a policy entry to turn off flow control
>>>
>>> <policyEntry topic="topicname" producerFlowControl="false" 
>>> memoryLimit="10mb"/>
>>>
>>> <policyEntry queue="queuename" producerFlowControl="false" 
>>> memoryLimit="10mb"/>
>>>
>>> however, if your consumers never catch up, then you need to decide what 
>>> you wanna do with your messages, as eventually you will run out of 
>>> resources, being it memory or disk space that holds all the messages.
>>>
>>> the <policyEntry> element has a bunch of sub element that you can setup 
>>> to control other needs
>>>
>>> Filip
>>>
>>> jaya_srini wrote:
>>>     
>>>> hi 
>>>>
>>>> We are using ActiveMQ 5.0 release and observing the following on
>>>> production.
>>>> After a certain number of messages are sent the Activemq send blocks.
>>>> The
>>>> thread dump produced the following
>>>>
>>>> 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)
>>>>
>>>>
>>>> The connection URI looks like the following
>>>>
>>>> failover:(tcp://10.11.12.13:61616?wireFormat.maxInactivityDuration=-1)
>>>>
>>>> I am not sure if jms.useAsyncSend=true or jms.dispatchAsync=true will
>>>> work
>>>> with a failover transport.  
>>>>
>>>> Can someone please help me troubleshoot this? Will increasing the
>>>> memory
>>>> limit on the broker help?
>>>>
>>>>   
>>>>       
>>>
>>>     
>>
>>   
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Need-Help-with-blocking-Producer%21-tp17141146s2354p17170578.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to