Hi All,
when storing a file the ftp component checks if the file exists in the
endpoint, this is done by listing the content of the destination folder and
looping through all files listed.

the list operation takes a long time when the destination folder contains
hundreds of files.
instead of listing for all files the component can simply list for the file
it is interested on, this way the number of files contained in destination
folder won't affect the time it takes the producer to process the exchange.

I currently have a case where delivering to an endpoint is taking more than
a minute because of this issue.


Both ftp and sftp libraries used supports listing for a single file so the
changes would be the following:

*on  FtpOperations*
public boolean existsFile(String name) throws
GenericFileOperationFailedException {
  String[] names = client.listNames(name);
  if (names == null) {
    return false;
  }
  return (names.lenght >= 1);
}



*on SftpOperations*
public boolean existsFile(String name) throws
GenericFileOperationFailedException {
  Vector files = channel.ls(name);
  if (names == null) {
    return false;
  }
  return (names.size >= 1);
}

--
View this message in context: 
http://camel.465427.n5.nabble.com/FTP-component-enhancement-suggestion-tp4692606p4692606.html
Sent from the Camel Development mailing list archive at Nabble.com.

Reply via email to