Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: CAMEL-903

...

ftp://someone@someftpserver.com/public/upload/images/holiday2008?password=secret&binary=true
ftp://someoneelse@someotherftpserver.co.uk:12049/reports/2008/budget.txt?password=secret&binary=false&directory=false
ftp://publicftpserver.com/download

Warning
titleTimestamp

In Camel 1.4 or older the FTP consumer uses an internal timestamp for last polling. This timestamp is used to match for new remote files: if remote file modified timestamp > last poll timestamp => file can be consumed.

In Camel 1.5 this algorithm has been disabled by default as its not reliable over the FTP protocol. FTP Servers only return file modified timestamps using HH:mm (not seconds). And of course the clocks between the client and server can also be out of sync. Bottom line is that timestamp check for FTP protocol should not be used. That is why this feature is marked as @deprecated and will be removed in Camel 2.0.

We encourage you to use a different strategy for matching new remote files: such as deleting or moving the file after download.

Options

Name

Default Value

Description

directory

true

indicates whether or not the given file name should be interpreted by default as a directory or file (as it sometimes hard to be sure with some FTP servers)

password

null

specifies the password to use to login to the remote file system

binary

false

specifies the file transfer mode BINARY or ASCII. Default is ASCII.

ftpClientConfig

null

Camel 1.5: Reference to a bean in the registry as a org.apache.commons.net.ftp.FTPClientConfig class. Use this option if you need to configure the client according to the FTP Server date format, locale, timezone, platform etc. See the javadoc FTPClientConfig for more documentation.

consumer.recursive

true/false

if a directory, will look for changes in files in all the sub directories. Is true as default for Camel 1.4 or older. Will change to false as default value as of Camel 1.5

consumer.setNames

false

Used by FTPConsumer. If set to true Camel will set the special filename header FileComponent.HEADER_FILE_NAME value to the filename from the FTP Server.
Note: In Camel 1.4 the default value has changed to true.

consumer.delay

500

Delay in millis between each poll

consumer.initialDelay

1000

Millis before polling starts

consumer.userFixedDelay

false

true to use fixed delay between pools, otherwise fixed rate is used. See ScheduledExecutorService in JDK for details.

consumer.regexPattern

null

Used by FTPConsumer. Regular expression to use for matching files when consuming.

consumer.exclusiveReadLock

false

Camel 1.5: Used by FTPConsumer. If set to true Camel will only poll the ftp files if it has exclusive read to the file (= the file is not in progress of being written). Camel will wait until it is granted, testing once every second. The test is implemented by Camel will try to rename the file. Setting to false Camel will poll the file even if its in progress of being written.

consumer.deleteFile

false

Camel 1.5: Used by FTPConsumer. Flag to set if the consumed file should be deleted after it has been downloaded.

consumer.moveNamePrefix

null

Camel 1.5: Used by FTPConsumer. The prefix String perpended to the filename when moving it. For example to move processed files into the done directory, set this value to 'done/'

consumer.moveNamePostfix

null

Camel 1.5: Used by FTPConsumer. The postfix String appended to the filename when moving it. For example to rename processed files from foo to foo.old set this value to '.old'

consumer.excludedNamePrefix

null

Camel 1.5: Used by FTPConsumer. Is used to exclude files if filename is starting with the given prefix.

consumer.excludedNamePostfix

null

Camel 1.5: Used by FTPConsumer. Is used to exclude files if filename is ending with the given postfix.

consumer.timestamp

false

Camel 1.5: @deprecated will be removed in Camel 2.0. This option is only for backwards comparability.

New default behavior for FTP/SFTP-Consumers in Camel 1.5

...

The consumer recursive option will be changed from true to false as the default value. We don't feel that Camel out-of-the-box should recursive poll.

The consumer will not use timestamp algorithm for determine if a remote file is a new file - see warning section above. To use the old behavior of Camel 1.4 or older you can use the option consumer.timestamp=true.

Exclusive Read Lock

The new option consumer.exclusiveReadLock can be used to force Camel not to consume files that is currently in the progress of being written. However this option is default turned off, as it requires that the user has write access. There are other solutions to avoid consuming files that are currently being written over FTP, for instance you can write the a temporary destination and move the file after it has been written.

...

When using FTPConsumer (downloading files from a FTP Server) the consumer specific properties from the File component should be prefixed with "consumer.". For example the delay option from File Component should be specified as "consumer.delay=30000" in the URI. See the samples or some of the unit tests of this component.

Known issues

See the timestamp warning.

When consuming files (downloading) you must use type conversation to either String or to InputStream for ASCII and BINARY file types.
In Camel 1.4 this is fixed, as there are build in type converters for the ASCII and BINARY file types, meaning that you do not need the convertBodyTo expression.

...