Я использую выходной канал интеграции с пружиной для отправки файлов на FTP-сервер (-ы). Из проведенных исследований я смог отправить один файл из папки на ftp, меня беспокоит то, что я хочу продолжатьопрос локальной папки ex: BEY / finalBEY.csv и когда есть файл с именем «finalBEY.csv», я хочу отправить его на определенный FTP-сервер, и если в папке нет файла, который я хочу продолжать наблюдатьили опрашивая папку, пока она не появится, я уверен, что это возможно, но не смог найти решение или правильное кодирование, спасибо за помощь
Код, который я использовал:
public IntegrationFlow ftpOutboundFlow(Branch myBranch){
return IntegrationFlows.from(OUTBOUND_CHANNEL)
.handle(Ftp.outboundAdapter(createNewFtpSessionFactory(myBranch), FileExistsMode.REPLACE)
.useTemporaryFileName(true)
.autoCreateDirectory(true)
//.remoteFileSeparator("/")
.fileNameExpression("headers['" + FileHeaders.FILENAME + "']")
//.fileNameExpression("BEY/FEFOexportBEY.csv")
.remoteDirectory(myBranch.getFolderPath()))
.get();
}
@Bean
public MessageChannel OUTBOUND_CHANNEL(){
return new PublishSubscribeChannel();
}
@MessagingGateway
public interface MyGateway {
@Gateway(requestChannel = OUTBOUND_CHANNEL)
void sendToFtp(File file);
}
В контроллере, где я регистрирую поток и отправляю файл.
private void addFlowftpOutbound(String name) {
branch = branchService.getById(Long.valueOf(name));
System.out.println(branch.getBranchCode());
IntegrationFlow flow = ftIntegration.ftpOutboundFlow(branch);
this.flowContext.registration(flow).id(name +"o").register();
myGateway.sendToFtp(new File("BEY/finalBEY.csv"));
}
Консольный пробный вывод:
Когда в папке BEY нет файла, что логично.
2018-11-27 08:32:47.793 WARN 6420 --- [nio-8081-exec-9] o.s.i.ftp.session.FtpRemoteFileTemplate : File BEY\finalBEY.csv does not exist
После удаления finalBEY.csv в папку, входящий поток просто читает то, что там есть в папке, и, как вы можете видеть, ничего не отправляется, а также я проверил сервер ftp и ничего там нет, обратите внимание, что еслифайл яЕсли я уже запустил приложение, оно уже отправлено, это уже проверено.
2018-11-27 08:33:17.985 INFO 6420 --- [ask-scheduler-2] f.s.s.configuration.FTIntegration : flow=stockInboundFlowFromAFT, message=incoming file: BEY\finalBEY.csv
2018-11-27 08:33:17.985 INFO 6420 --- [ask-scheduler-2] f.s.s.configuration.FTIntegration : flow=stockIntermediateStageChannel, message=rename file: BEY\finalBEY.csv