使用SftpMessageHandler时未调用ServiceActivator

时间:2018-08-15 16:15:02

标签: java spring spring-integration spring-integration-sftp

我是Spring Integration的新手。下面给出的是我的课程的一部分,其中有两个ServiceActivator,outboundFileHandler产生ServiceActivator,该服务将文件传输到sftp。它工作正常,我可以看到文件已上传到sftp。

一旦文件传输到sftp,我希望第二个ServiceActivator被调用,以便我可以重命名原始文件。但是,它没有被调用,日志中也没有错误。

我在这里想要做的是,我想将文件从本地目录上传到sftp,一旦上传,就重命名本地文件,这样就不会再次将其拾取以上传到sftp。我究竟做错了什么?为什么我的第二个ServiceActivator没有被调用。

@Bean
@ServiceActivator(inputChannel = "fileOutputChannel", outputChannel = "renameSourceChannel", requiresReply = "true")
public MessageHandler outboundFileHandler(@Headers Map<String, Object> headerMap) {
    SftpMessageHandler handler = new SftpMessageHandler(sftpSessionFactory);
    handler.setRemoteDirectoryExpressionString("headers['remote-target-dir']");
    return handler;
}


@Bean
@ServiceActivator(inputChannel = "renameSourceChannel")
public MessageHandler renameSource() {
    return new MessageHandler() {
        @Override
        public void handleMessage(Message<?> message) throws MessagingException {
            LOGGER.info("rename file " + message.getHeaders());
            // todo
        }
    };
}

0 个答案:

没有答案