Jms 提交事务性持久AMQ消息时观察到巨大的延迟

Jms 提交事务性持久AMQ消息时观察到巨大的延迟,jms,activemq,Jms,Activemq,我有以下AMQ使用者配置文件,它试图使用队列中的“持久”消息。此外,消息是“事务性的”(因为如果消息不能以预期的方式处理,我需要回滚) 我发现此配置存在问题: 每当消费者在消费消息后调用session.commit()时,我都会看到commit调用需要约8秒才能完成。我相信这是预料不到的 如果我对下面的配置有任何问题,有人能告诉我吗 <bean id="amqConnectionFactory" class="org.apache.activemq.ActiveMQConnection

我有以下AMQ使用者配置文件,它试图使用队列中的“持久”消息。此外,消息是“事务性的”(因为如果消息不能以预期的方式处理,我需要回滚)

我发现此配置存在问题: 每当消费者在消费消息后调用session.commit()时,我都会看到commit调用需要约8秒才能完成。我相信这是预料不到的

如果我对下面的配置有任何问题,有人能告诉我吗

  <bean id="amqConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
    <property name="brokerURL" value="tcp://localhost:61616"/>
  </bean>

  <bean id="simpleMessageListener" class="listener.StompSpringListener"  scope="prototype" />

  <bean id="destination" class="org.apache.activemq.command.ActiveMQQueue">
    <property name="physicalName" value="JOBS.notifications"/>
  </bean>

  <bean id="poolMessageListener" class="org.springframework.aop.target.CommonsPoolTargetSource">
    <property name="targetBeanName" value="simpleMessageListener"/>
    <property name="maxSize" value="200"/>
  </bean>

  <bean id="messageListenerBean" class="org.springframework.aop.framework.ProxyFactoryBean">
    <property name="targetSource" ref="poolMessageListener"/>
  </bean>

  <jms:listener-container 
         container-type="default" 
         connection-factory="amqConnectionFactory" 
         acknowledge="transacted" 
         concurrency="200-200"
         cache="consumer"
         prefetch="10">

    <jms:listener destination="JOBS.notifications" ref="messageListenerBean" method="onMessage"/> 
  </jms:listener-container>

看一下页面。我马上就能看到,您应该使用
poolgconnectionfactory
而不是
ActiveMQConnectionFactory
。这将确保只有一个TCP连接从您的代码设置到代理,并且将在轮询线程之间共享