Hi all, I use this config for my activeMq customer in order to reserve message from broker;
<!-- --> <bean id="connectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory"> <constructor-arg ref="amqConnectionFactory" /> <property name="exceptionListener" ref="jmsExceptionListener" /> </bean> <!-- See dbconn_Sqlserver.properties --> <amq:connectionFactory id="amqConnectionFactory" brokerURL="${mq.url}" userName="${mq.user}" password="${mq.password}"/> <!-- --> <bean id="connectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory"> <constructor-arg ref="amqConnectionFactory" /> <property name="exceptionListener" ref="jmsExceptionListener" /> </bean> <!-- See dbconn_Sqlserver.properties --> <amq:connectionFactory id="amqConnectionFactory" brokerURL="${mq.url}" userName="${mq.user}" password="${mq.password}"/> it was Works perfect, Today I use a large numbers of threads to send messages to the broker,then the customer thrown some exceptions: $1.onCommand(TransportConnection.java:179) at org.apache.activemq.transport.TransportFiljavax.jms.JMSException: Unmatched acknowledge: MessageAck {commandId = 2240258, responseRequired = false, ackType = 2, consumerId = ID:BJ-B28-IBM-248.xiaoxiao.com-44443-1306753710105-0:1:1:1, firstMessageId = ID:BJ-B28-IBM-252.xiaoxiao.com-23258-1306740772622-0:123277:1:1:5, lastMessageId = ID:BJ-B28-IBM-252.xiaoxiao.com-23258-1306740772622-0:123277:1:1:5, destination = queue://JD.STOCK, transactionId = null, messageCount = 1, poisonCause = null}; Could not find Message-ID ID:BJ-B28-IBM-252.360buy.com-23258-1306740772622-0:123277:1:1:5 in dispatched-list (start of ack) at org.apache.activemq.broker.region.PrefetchSubscription.assertAckMatchesDispatched(PrefetchSubscription.java:439) at org.apache.activemq.broker.region.PrefetchSubscription.acknowledge(PrefetchSubscription.java:206) at org.apache.activemq.broker.region.AbstractRegion.acknowledge(AbstractRegion.java:383) at org.apache.activemq.broker.region.RegionBroker.acknowledge(RegionBroker.java:549) 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:197) at org.apache.activemq.broker.MutableBrokerFilter.acknowledge(MutableBrokerFilter.java:87) at org.apache.activemq.broker.TransportConnection.processMessageAck(TransportConnection.java:465) at org.apache.activemq.command.MessageAck.visit(MessageAck.java:229) at org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:306) at org.apache.activemq.broker.TransportConnectionter.onCommand(TransportFilter.java:69) at org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113) at org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:227) at org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83) at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:220) at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:202) at java.lang.Thread.run(Thread.java:619) RestMessageListener-1 WARN [2011-06-08 17:06:25] org.springframework.jms.listener.DefaultMessageListenerContainer::handleListenerSetupFailure - Setup of JMS message listener invoker failed for destination 'REST.EXCEPTION' - trying to recover. Cause: The Consumer is closed MqMessageListener-1 ERROR [2011-06-08 17:06:25] org.springframework.jms.listener.DefaultMessageListenerContainer::rollbackOnExceptionIfNecessary - Application exception overridden by rollback exception org.springframework.transaction.IllegalTransactionStateException: Transaction is already completed - do not call commit or rollback more than once per transaction at org.springframework.transaction.support.AbstractPlatformTransactionManager.rollback(AbstractPlatformTransactionManager.java:817) at com.jd.jitstock.platform.mq.listener.MQMessageListener.onMessage(MQMessageListener.java:118) at org.springframework.jms.listener.adapter.MessageListenerAdapter.onMessage(MessageListenerAdapter.java:339) at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:535) at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:495) at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:467) at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:325) at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:263) at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1058) at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1050) at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:947) at java.lang.Thread.run(Thread.java:619) Ten minutes later the log print MqMessageListener-1 INFO [2011-06-08 17:13:47] org.springframework.jms.listener.DefaultMessageListenerContainer::refreshConnectionUntilSuccessful - Successfully refreshed JMS Connection RestMessageListener-1 INFO [2011-06-08 17:13:47] org.springframework.jms.listener.DefaultMessageListenerContainer::refreshConnectionUntilSuccessful - Successfully refreshed JMS Connection this is my URL mq.url=failover:(tcp://127.0.0.1:61616,tcp://168.2.33.1:61616)?initialReconnectDelay=10000&maxReconnectAttempts=6&randomize=false when the exceptions thrown, then minutes later the customer has also Connectioned the broker,but was very slowly ,i restart the activemq and tomcat,the customer was also slowly, then I Deployment of my customer application on other PC, it was reserve message quickly, now I can't restart my pc , how I can solve this problem. thanks.