该版本仍在开发中,尚未被视为稳定。对于最新的稳定版本,请使用 Spring Integration 7.0.0spring-doc.cadn.net.cn

SFTP 会话缓存

从 Spring Integration 3.0 版本开始,会话不再默认缓存。 这缓存会话属性在端点上已不再支持。如果你想缓存会话,必须使用缓存会话工厂(见下一个例子)

在3.0之前的版本中,会话默认会自动缓存。 一个缓存会话属性功能可用于禁用自动缓存,但该方案未提供配置其他会话缓存属性的方法。例如,你无法限制创建会话数量。为了支持该要求及其他配置选项,我们增加了缓存会话工厂. 它提供sessionCacheSizesessionWaitTimeout性能。 顾名思义,sessionCacheSize属性控制工厂缓存中维护的活跃会话数量(默认为无界)。如果sessionCacheSize一旦达到阈值,任何获取其他会话的尝试都会被阻塞,直到缓存会话中的任何一个可用,或会话的等待时间到期(默认等待时间为Integer.MAX价值). 这sessionWaitTimeout属性允许配置等待时间。spring-doc.cadn.net.cn

如果你想缓存会话,配置默认会话工厂(如前所述),然后将其封装在缓存会话工厂你可以提供这些额外的属性。以下示例展示了如何实现:spring-doc.cadn.net.cn

<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>

上述例子创建了缓存会话工厂sessionCacheSize设置为10以及其sessionWaitTimeout设置为一秒(1000毫秒)。spring-doc.cadn.net.cn

从 Spring Integration 3.0 版本开始,缓存连接工厂提供resetCache()方法。 调用时,所有空闲会话立即关闭,正在使用的会话在返回缓存时关闭。使用isSharedSession=true,通道关闭,共享会话仅在最后一个通道关闭时关闭。新的会话请求会根据需要建立新的会话。spring-doc.cadn.net.cn

从5.1版本开始,缓存会话工厂拥有一个新房产测试会话. 当为真时,会话将通过执行以下作进行测试实路命令请求空路径以确保其仍然活跃;如果没有,该路径将从缓存中移除;如果缓存中没有活跃会话,则创建一个新的会话。spring-doc.cadn.net.cn