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 <[EMAIL PROTECTED]> 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