此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Integration 6.5.1! |
SFTP 会话缓存
从 Spring Integration 版本 3.0 开始,默认情况下不再缓存会话。
这cache-sessions 端点不再支持属性。
如果要缓存会话,则必须使用CachingSessionFactory (请参阅下一个示例)。 |
在 3.0 之前的版本中,默认情况下会自动缓存会话。
一个cache-sessions
属性可用于禁用自动缓存,但该解决方案没有提供配置其他会话缓存属性的方法。
例如,您无法限制创建的会话数。
为了支持该要求和其他配置选项,我们添加了一个CachingSessionFactory
.
它提供了sessionCacheSize
和sessionWaitTimeout
性能。
顾名思义,sessionCacheSize
属性控制工厂在其缓存中维护的活动会话数(默认值为无限制)。
如果sessionCacheSize
已达到阈值,则任何获取另一个会话的尝试都会阻塞,直到其中一个缓存的会话变为可用或会话的等待时间到期(默认等待时间为Integer.MAX_VALUE
).
这sessionWaitTimeout
属性启用等待时间的配置。
如果希望缓存会话,请配置默认会话工厂(如前所述),然后将其包装在CachingSessionFactory
您可以在其中提供这些附加属性。
以下示例显示了如何执行此作:
<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>
前面的示例创建了一个CachingSessionFactory
与其sessionCacheSize
设置为10
及其sessionWaitTimeout
设置为一秒(1000毫秒)。
从 Spring Integration 3.0 版开始,CachingConnectionFactory
提供一个resetCache()
方法。
调用时,所有空闲会话都会立即关闭,正在使用的会话在返回到缓存时会关闭。
使用时isSharedSession=true
,通道关闭,共享会话仅在最后一个通道关闭时关闭。
新的会话请求会根据需要建立新的会话。
从 5.1 版本开始,CachingSessionFactory
有一个新属性testSession
.
如果为 true,则将通过执行REALPATH
命令为空路径以确保它仍然处于活动状态;如果没有,它将从缓存中删除;如果缓存中没有活动会话,则会创建新会话。