Je suis en train de récupérer des fichiers à l'aide du composant Camel FTP (Camel 2.19.0):FTP Apache Camel obtenir Impossible de récupérer le fichier: Erreur RemoteFile
from("ftp://my.host.com:21/my/relative/directory?download=true&stepwise=false&delete=false")
Camel se connecte et la liste des fichiers dans le répertoire correctement mais quand il va les traiter, il jette l'exception suivante pour chaque fichier:
org.apache.camel.component.file.GenericFileOperationFailedException: Cannot retrieve file: RemoteFile[my/relative/directory/file1.txt] from: ftp://my.host.com:21/my/relative/directory?delete=false&download=true&stepwise=false
at org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:427)
at org.apache.camel.component.file.remote.RemoteFileConsumer.processExchange(RemoteFileConsumer.java:137)
at org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericFileConsumer.java:218)
at org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:182)
at org.apache.camel.impl.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:174)
at org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:101)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
a partir des journaux de TRACE, je peux voir que Camel est la liste des fichiers dans le répertoire correctement:
[TRACE] 2017-09-05 11:40:49,438 org.apache.camel.component.file.remote.FtpConsumer - Polling directory: my/relative/directory
[TRACE] 2017-09-05 11:40:51,748 org.apache.camel.component.file.remote.FtpOperations - listFiles(my/relative/directory)
[TRACE] 2017-09-05 11:40:58,657 org.apache.camel.component.file.remote.FtpConsumer - Found 3 in directory: my/relative/directory
[TRACE] 2017-09-05 11:40:58,657 org.apache.camel.component.file.remote.FtpConsumer - FtpFile[name=/absolute/path/to/directory/file1.txt, dir=false, file=true]
[TRACE] 2017-09-05 11:40:58,657 org.apache.camel.component.file.remote.FtpConsumer - FtpFile[name=/absolute/path/to/directory/file2.txt, dir=false, file=true]
[TRACE] 2017-09-05 11:40:58,657 org.apache.camel.component.file.remote.FtpConsumer - FtpFile[name=/absolute/path/to/directory/file3.txt, dir=false, file=true]
Lorsque Camel tente de traiter chaque dossier cependant, il semble être préfixer le répertoire relatif au répertoire absolu et de ne pas trouver le chemin brouillées résultant:
[TRACE] 2017-09-05 11:40:59,417 org.apache.camel.component.file.remote.FtpConsumer - Processing file: RemoteFile[absolute/path/to/directory/file1.txt]
[TRACE] 2017-09-05 11:40:59,418 org.apache.camel.component.file.remote.FtpConsumer - Retrieving file: my/relative/directory//absolute/path/to/directory/file1.txt from: ftp://my.host.com:21/my/relative/directory?delete=false&download=true&stepwise=false
[TRACE] 2017-09-05 11:40:59,418 org.apache.camel.component.file.remote.FtpOperations - retrieveFile(my/relative/directory//absolute/path/to/directory/file1.txt)
[TRACE] 2017-09-05 11:40:59,418 org.apache.camel.component.file.remote.FtpOperations - Client retrieveFile: my/relative/directory//absolute/path/to/directory/file1.txt
[WARN ] 2017-09-05 11:40:59,518 org.apache.camel.component.file.remote.FtpConsumer - Error processing file RemoteFile[absolute/path/to/directory/file1.txt] due to Cannot retrieve file: RemoteFile[absolute/path/to/directory/file1.txt] from: ftp://my.host.com:21/my/relative/directory?delete=false&download=true&stepwise=false
Ce chemin dans les journaux construits par le FTPComponent est incorrect:
fichier Récupération: mon/parent/répertoire // absolu/chemin/vers/répertoire/file1.txt
Je débogué le consommateur Camel FTP et il ressemble à on line 238 is where the relative path is getting prepended to the absolute path
Il est intéressant de the SFTP component is doing the same thing mais il fonctionne parce que RemoteFileOperations<ChannelSftp.LsEntry>
ne nom de fichier défini non pas comme un chemin absolu mais RemoteFileOperations<FTPFile>
fait.
Est-ce que quelqu'un a des suggestions pour contourner ce problème afin que le FTP Conponent utilise les fichiers? ou est-ce que je fais quelque chose de mal?
J'utilise Camel 2.19.0
Salut désolé, cela ne résout pas mon problème. Le problème n'est pas de savoir si les chemins relatifs ou absolus fonctionnent, ni avec le composant FTP de Camel (SFTP fonctionne cependant). –