如何使用 Spring 集成 sftp 出站网关和 java 配置

How to use Spring integration sftp outbound gateway with java config

我是 Spring 集成的新手 sftp.Now,我想从多个 directories.then 下载文件,看来 SFTP 出站网关是我的选择,但我只找到使用示例XML config.How 可以使用 Java 配置来完成吗? 我的配置 class:

@Configuration
public class SftpConfig {
    @Bean
    public SessionFactory<LsEntry> sftpSessionFactory(){
        DefaultSftpSessionFactory defaultSftpSessionFactory = new DefaultSftpSessionFactory();
        ...
        return new CachingSessionFactory<LsEntry>(defaultSftpSessionFactory);
    }
    @Bean
    @InboundChannelAdapter(channel = "sftpChannel",autoStartup = "false", poller = @Poller(fixedDelay = "5000"))
    public MessageSource<File> sftpMessageSource() {
    ...
    }
    @Bean(name = "lsGateway")
    @ServiceActivator(inputChannel = "sftpChannel")
    public MessageHandler handlerLs(){
        SftpOutboundGateway sftpOutboundGateway = new SftpOutboundGateway(sftpSessionFactory(),"ls","payload");
        sftpOutboundGateway.setLocalDirectory(new File("sftp-gateway"));
        return sftpOutboundGateway;
    }
}

@MessagingGateway
public interface OutboundGatewayOption {
    @Gateway(requestChannel = "sftpChannel")
    public List<Boolean> lsGetAndRmFiles(String dir);

}

但是当我启动应用程序时,没有任何反应,哪里错了?

----更新--- 我的测试class

@SpringBootTest(classes = Application.class)
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@Configuration
@EnableIntegration
@Slf4j
@MessageEndpoint
public class SftpConfigTest{
    @Autowired
    private OutboundGatewayOption gatewayOption;
    @Test
    public void test(){
        gatewayOption.lsGetAndRmFiles("/");
    }
}

不清楚您所说的 "nothing happens" 是什么意思。看来您有两种方法来触发 LS 请求 - 消息传递网关(您必须调用)和入站通道适配器,它具有 autoStartup = "false" - 它在启动之前不会调用网关。

此外,当使用它作为触发器时,您将需要 SFTP 网关上的输出通道(将结果发送到哪里)。调用消息网关调用网关时,会将结果返回给网关(因为SFTP网关没有输出通道)。