我是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
}
};
}