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