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>
答案 0 :(得分:0)
PooledConnectionFactory在使用者处理完消息后关闭会话/使用者连接。因此,使用者数量不断减少。
如果您使用的是多线程环境,最好使用CachingConnectionFactory。但这有一些缺点,因为它缓存了使用者,因此如果使用者挂起,客户端将继续对停滞的使用者进行ping操作,而无需知道其连接处于空闲状态。
使用JMS模板很难找到解决您问题的精确解决方案,但是您可以通过使用connection.start()
或connection.createConnection
方法检查连接是否已关闭来手动创建新连接。