activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Hiram Chirino" <hi...@hiramchirino.com>
Subject Re: Help ! - Broker Hanging up
Date Tue, 06 Mar 2007 20:37:58 GMT
if you kill the JVM of the broken listener does the publisher
un-block?  If so then this is the expected behaviour.  The reason for
this is that even though the listner is logically broken, (it's not
receiving messages anymore), the broker does not know this since it
still has an active connection with the broker.  Furthermore, the
broker is blocking the publisher because it is queueing up messages in
memory for that dead consumer.

On 3/6/07, rabidgremlin <rabidgremlin@gmail.com> wrote:
> Hi All,
>
> I have a production application that receives SOAP "event" messages,
> converts them into JMS messages and publishes them to a topic. I then have
> multiple subscribers listening to these "events".
>
> Under high loads (500-1000 events a minute) messages stop been published. I
> continue to receive SOAP requests but my send() call on my TopicPublisher
> just blocks.
>
> We are able to consistently reproduce this behaviour in our test
> environments but in a rather odd manner. If a test listener fails (by
> running out of memory) then the TopicPublisher blocks on the send() and no
> listeners get any messages. See Stacktrace 1 below.
>
> I have tried setting setDispatchAsync(true) & setUseAsyncSend(true) on the
> ActiveMQConnectionFactory for the TopicPublisher but I still get a hang up
> but in a different place. See Stacktrace 2 below.
>
> This happens with 4.01 and 4.1. I have also tried applying the patch listed
> in AMQ-1093 to no avail.
>
> This seems very odd since a broken listener should not effect the publisher
> or the other listeners.
>
> Anyone have any ideas ?
>
> Jonathan
>
> --------------------------------------------------
> Stacktrace 1
> java.lang.Object.wait(Native Method)
> java.lang.Object.wait(Object.java:474)
> edu.emory.mathcs.backport.java.util.concurrent.locks.CondVar.await(
> CondVar.java:75)
> edu.emory.mathcs.backport.java.util.concurrent.ArrayBlockingQueue.take(
> ArrayBlockingQueue.java:318)
> org.apache.activemq.transport.FutureResponse.getResult(FutureResponse.java
> :38)
> org.apache.activemq.transport.ResponseCorrelator.request(
> ResponseCorrelator.java:74)
> org.apache.activemq.ActiveMQConnection.syncSendPacket(
> ActiveMQConnection.java:1112)
> org.apache.activemq.ActiveMQSession.send(ActiveMQSession.java:1555)
> org.apache.activemq.ActiveMQMessageProducer.send(
> ActiveMQMessageProducer.java:462)
> org.apache.activemq.ActiveMQMessageProducer.send(
> ActiveMQMessageProducer.java:384)
> veventsink.mq.Sender.send(Sender.java:88)
> veventsink.soap.impl.logevent.EventSenderThread.run(EventSenderThread.java
> :94)
> java.lang.Thread.run(Thread.java:595)
>
> ---------------------------------------
> Stacktrace 2
> java.net.SocketOutputStream.socketWrite0(Native Method)
> java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
> java.net.SocketOutputStream.write(SocketOutputStream.java:136)
> org.apache.activemq.transport.tcp.TcpBufferedOutputStream.flush(
> TcpBufferedOutputStream.java:109)
> java.io.DataOutputStream.flush(DataOutputStream.java:106)
> org.apache.activemq.transport.tcp.TcpTransport.oneway(TcpTransport.java:119)
> org.apache.activemq.transport.InactivityMonitor.oneway(
> InactivityMonitor.java:141)
> org.apache.activemq.transport.TransportFilter.oneway(TransportFilter.java
> :80)
> org.apache.activemq.transport.WireFormatNegotiator.oneway(
> WireFormatNegotiator.java:93)
> org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:43)
> org.apache.activemq.transport.ResponseCorrelator.oneway(
> ResponseCorrelator.java:60)
> org.apache.activemq.ActiveMQConnection.asyncSendPacket(
> ActiveMQConnection.java:1151)
> org.apache.activemq.ActiveMQSession.send(ActiveMQSession.java:1546)
> org.apache.activemq.ActiveMQMessageProducer.send(
> ActiveMQMessageProducer.java:465)
> org.apache.activemq.ActiveMQMessageProducer.send(
> ActiveMQMessageProducer.java:384)
> veventsink.mq.Sender.send(Sender.java:87)
> veventsink.soap.impl.logevent.EventSenderThread.run(EventSenderThread.java
> :94)
> java.lang.Thread.run(Thread.java:595)
>
> -------------------------------------------
> Other Info
> - using an embedded broker with persistence and JMX turned off
> - TopicSession (for the publisher) is created with transacted set to false
> and Session.AUTO_ACKNOWLEDGE
> - Topic is created with default settings
> - Sends on TopicPublisher have priority of 1, 30 second lifespan and
> DeliveryMode.NON_PERSISTENT
>


-- 
Regards,
Hiram

Blog: http://hiramchirino.com

Mime
View raw message