Spring CachingConnectionFactory在空闲时不会收获

时间:2015-03-20 19:47:11

标签: jms connection-pooling spring-integration ibm-mq spring-jms

我使用spring CachingConnectionFactory,如下面的配置缓存MQ会话。我可以看到缓存按预期工作:

  • 它打开一个MQ连接
  • 根据需要创建新会话并重复使用

我的应用程序在邮件流量中存在短暂的高峰。因此,当存在峰值时,会话大小会膨胀并且在峰值之后很长时间内保持不变。我正在寻找一种在一段特定的不活动时间后收获这些空闲会话的方法。反正有没有实现这个目标?

<jee:jndi-lookup id="mqQueueConnectionFactory" jndi-name="java:comp/env/jms/MyJMSQueueConnectionFactory" />

<bean id="userConnectionFactory" class="org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter">
    <property name="targetConnectionFactory" ref="mqQueueConnectionFactory"></property>
</bean>
<bean id="queueConnectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
    <property name="targetConnectionFactory" ref="userConnectionFactory"></property>
    <property name="reconnectOnException" value="${ssa.mq.cachesession}"></property>
    <property name="cacheProducers" value="${ssa.mq.cacheproducer}"></property>
    <property name="sessionCacheSize" value="${ssa.mq.producer.sessionsize}"></property>
    <property name="cacheConsumers" value="${ssa.mq.cacheconsumers}"></property>
</bean>

1 个答案:

答案 0 :(得分:1)

您可以减少sessionCacheSize;超过缓存大小时关闭的任何会话将在下次使用时以物理方式关闭。