对于最新的稳定版本,请使用 Spring Integration 6.3.1Spring中文文档

对于最新的稳定版本,请使用 Spring Integration 6.3.1Spring中文文档

从 Spring Integration 版本 3.0 开始,默认情况下不再缓存会话。 终结点不再支持该属性。 如果要缓存会话,则必须使用 (请参阅下一个示例)。cache-sessionsCachingSessionFactory
从 Spring Integration 版本 3.0 开始,默认情况下不再缓存会话。 终结点不再支持该属性。 如果要缓存会话,则必须使用 (请参阅下一个示例)。cache-sessionsCachingSessionFactory

在 3.0 之前的版本中,默认情况下会自动缓存会话。 有一个属性可用于禁用自动缓存,但该解决方案没有提供配置其他会话缓存属性的方法。 例如,您不能限制创建的会话数。 为了支持该要求和其他配置选项,我们添加了 . 它提供和属性。 顾名思义,该属性控制工厂在其缓存中维护的活动会话数(默认值为无界)。 如果已达到阈值,则任何获取另一个会话的尝试都会被阻止,直到其中一个缓存会话可用或会话的等待时间到期(默认等待时间为 )。 该属性允许配置等待时间。cache-sessionsCachingSessionFactorysessionCacheSizesessionWaitTimeoutsessionCacheSizesessionCacheSizeInteger.MAX_VALUEsessionWaitTimeoutSpring中文文档

如果要缓存会话,请配置默认会话工厂(如前所述),然后将其包装在可以提供这些附加属性的实例中。 以下示例演示如何执行此操作:CachingSessionFactorySpring中文文档

<bean id="sftpSessionFactory"
    class="org.springframework.integration.sftp.session.DefaultSftpSessionFactory">
    <property name="host" value="localhost"/>
</bean>

<bean id="cachingSessionFactory"
    class="org.springframework.integration.file.remote.session.CachingSessionFactory">
    <constructor-arg ref="sftpSessionFactory"/>
    <constructor-arg value="10"/>
    <property name="sessionWaitTimeout" value="1000"/>
</bean>

前面的示例创建一个,其设置为 和 设置为 1 秒(1000 毫秒)。CachingSessionFactorysessionCacheSize10sessionWaitTimeoutSpring中文文档

从 Spring Integration 版本 3.0 开始,提供了一个方法。 调用时,所有空闲会话都会立即关闭,而正在使用的会话在返回到缓存时会关闭。 使用 时,通道将关闭,共享会话仅在最后一个通道关闭时关闭。 新的会话请求根据需要建立新会话。CachingConnectionFactoryresetCache()isSharedSession=trueSpring中文文档

从版本 5.1 开始,具有新属性 。 如果为 true,则将通过对空路径执行命令来测试会话,以确保它仍然处于活动状态;如果没有,它将从缓存中删除;如果缓存中没有活动会话,则会创建一个新会话。CachingSessionFactorytestSessionREALPATHSpring中文文档