ActiveMQ version 5.3.2 and 5.4 Snapshot ActiveMQ is setup as a standalone broker. NODE_REQUEST topic is non-persistent.
I have been getting an “Invalid acknowledgment” exception, after a process which was subscribed to a non-durable topic was killed by a SIGKILL (kill -9). It appears as though the broker believes the consumer is still connected and it is not acknowledging the messages, which eventually leads to the vmcursor resources being exhausted. Once the vmcursor resources are exhausted the broker hangs. If a consumer does not shutdown gracefully (closing connection / session), how do I avoid the aforementioned “Invalid acknowledgement”? When the connection is being setup, the session is set to use “AUTO_ACKNOWLEDGE”. Is there a setting in the activemq .conf file, I should set to help alleviate abandoned connections. Additionally, can you point me to an example of a file based cursor activemq.xml config? Thanks in advance for your assistance!!! javax.jms.JMSException: Invalid acknowledgment: MessageAck {commandId = 99, responseRequired = false, ackType = 3, consumerId = ID:p110-43748-1279570531564-0:2:1:1, firstMessageId = ID:ops2-42483-1279570578651-0:1:1:1:16, lastMessageId = ID:ops2-42483-1279570578651-0:1:1:1:16, destination = topic://NODE_REQUEST, transactionId = null, messageCount = 1} at org.apache.activemq.broker.region.TopicSubscription.acknowledge(TopicSubscription.java:286) at org.apache.activemq.broker.region.AbstractRegion.acknowledge(AbstractRegion.java:382) at org.apache.activemq.broker.region.RegionBroker.acknowledge(RegionBroker.java:498) at org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:77) at org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:77) at org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:77) at org.apache.activemq.broker.TransactionBroker.acknowledge(TransactionBroker.java:200) at org.apache.activemq.broker.MutableBrokerFilter.acknowledge(MutableBrokerFilter.java:87) at org.apache.activemq.broker.TransportConnection.processMessageAck(TransportConnection.java:462) at org.apache.activemq.command.MessageAck.visit(MessageAck.java:205) at org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:306) at org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:182) at org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:69) at org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113) at org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:217) at org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83) at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:219) at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:201) at java.lang.Thread.run(Thread.java:619) 2010-07-20 21:48:02,042 | INFO | TopicSubscription: consumer=ID:ops2 -56606-1279638920543-0:0:1:1, destinations=1, dispatched=32766, delivered=2290710, matched=25519, discarded=0: Pending message cursor [org.apache.activemq.broker.region.cursors.vmpendingmessagecur...@1fc102ae] is full, temp usage (0%) or memory usage (100%) limit reached, blocking message add() pending the release of resources. | org.apache.activemq.broker.region.TopicSubscription | ActiveMQ Transport: tcp:///10.10.101.42:55292 -- View this message in context: http://old.nabble.com/VMCursor-Exhaustion-tp29274805p29274805.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.