Spring 集成旋转服务器与 SFTP 出站网关的建议

问题描述 投票:0回答:1

我想询问是否可以将旋转服务器建议与 SFTP 出站网关一起使用,我正在使用 SFTP 入站适配器轮询文件,并且在轮询方法中我使用旋转服务器建议。它工作完美,但我想在完成流程后重命名文件。

我使用的是SFTP出站网关,它不需要轮询。我只想在输出通道中收到消息时重命名。我如何使用建议或确保在正确的服务器上重命名正确的文件,我有多个服务器和多个目录?

另外,对于不同的解决方案,有类似的问题,有没有办法只列出我的多个服务器和目录上的文件。我不想下载或获取文件流,我只想获取文件名和路径。为此,我也使用带有 list 命令的 SFTP 出站网关,但它似乎也不会在我的多个服务器/目录上轮换。

spring spring-boot spring-integration
1个回答
0
投票

如果您想在 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>
© www.soinside.com 2019 - 2024. All rights reserved.