我想询问是否可以将旋转服务器建议与 SFTP 出站网关一起使用,我正在使用 SFTP 入站适配器轮询文件,并且在轮询方法中我使用旋转服务器建议。它工作完美,但我想在完成流程后重命名文件。
我使用的是SFTP出站网关,它不需要轮询。我只想在输出通道中收到消息时重命名。我如何使用建议或确保在正确的服务器上重命名正确的文件,我有多个服务器和多个目录?
另外,对于不同的解决方案,有类似的问题,有没有办法只列出我的多个服务器和目录上的文件。我不想下载或获取文件流,我只想获取文件名和路径。为此,我也使用带有 list 命令的 SFTP 出站网关,但它似乎也不会在我的多个服务器/目录上轮换。
如果您想在 SFTP 出站网关中使用轮换服务器建议处理后重命名文件,我会使用通道拦截器,它从消息中获取信息来决定文件所在的服务器和目录,然后处理重命名。要在不下载或流式传输的情况下列出多个服务器和目录上的文件,您可以使用拦截器遵循类似的方法,但它不会重命名,而是使用 SFTP 出站网关列出文件,从而避免文件内容传输。
import org.springframework.integration.handler.AbstractMessageHandler;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageChannel;
import org.springframework.messaging.support.ChannelInterceptorAdapter;
public class FileRenameInterceptor extends ChannelInterceptorAdapter {
@Override
public Message<?> preSend(Message<?> message, MessageChannel channel) {
//Extract info from the msg and get server and dir, rename file etc
renameFile(server, directory, fileName);
return super.preSend(message, channel);
}
private void renameFile(String server, String directory, String fileName) {
//file renaming logic
}
}
添加配置到
applicationContext.xml
<int:channel id="outputChannel">
<int:interceptors>
<bean class="com.example.FileRenameInterceptor"/>
</int:interceptors>
</int:channel>