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