Activemq使用者无法自动重新连接

时间:2015-10-29 11:56:36

标签: spring activemq

  

jms.brokerurl =故障切换:(TCP:// IP:61616 wireFormat.maxInactivityDuration = 0)?jms.prefetchPolicy.queuePrefetch \ = 2及随机\ =假安培; initialReconnectDelay \ = 50&安培;超时\ = 3000

Spring配置

<bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory" init-method="start" destroy-method="stop">
    <property name="connectionFactory" ref="jmsConnectionFactory"/>
    <property name="maxConnections" value="10"/>
    <property name="maximumActive" value="10"/>
    <property name="idleTimeout" value="0"/>
</bean>

<bean id="receiveContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
    <property name="connectionFactory" ref="pooledConnectionFactory"/>
    <property name="destination" ref="QUEUE_NAME"/>
    <property name="messageListener" ref="productUpdateListener" />
    <property name="sessionTransacted" value="true"/>
    <property name="autoStartup" value="true"/>
</bean>

1 个答案:

答案 0 :(得分:0)

PooledConnectionFactory在使用者处理完消息后关闭会话/使用者连接。因此,使用者数量不断减少。

如果您使用的是多线程环境,最好使用CachingConnectionFactory。但这有一些缺点,因为它缓存了使用者,因此如果使用者挂起,客户端将继续对停滞的使用者进行ping操作,而无需知道其连接处于空闲状态。

使用JMS模板很难找到解决您问题的精确解决方案,但是您可以通过使用connection.start()connection.createConnection方法检查连接是否已关闭来手动创建新连接。

相关问题