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.

Reply via email to