第 112 章 FTPS 组件
从 Camel 版本 2.2 开始提供
这个组件通过 FTP 和 SFTP 协议提供对远程文件系统的访问。
Maven 用户需要将以下依赖项添加到此组件的 pom.xml
中:
<dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-ftp</artifactId> <version>x.x.x</version> <!-- use the same version as your Camel core version --> </dependency>
有关详情,您可以查看 FTP 组件
112.1. URI 选项
以下选项专用于 FTPS 组件。
FTPS 组件支持 2 个选项,如下所列。
名称 | 描述 | 默认值 | 类型 |
---|---|---|---|
useGlobalSslContext Parameters (security) | 启用使用全局 SSL 上下文参数。 | false | 布尔值 |
resolveProperty Placeholders (advanced) | 启动时组件是否应解析自身上的属性占位符。只有属于 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
FTPS 端点使用 URI 语法进行配置:
ftps:host:port/directoryName
使用以下路径和查询参数:
112.1.1. 路径参数(3 参数):
名称 | 描述 | 默认值 | 类型 |
---|---|---|---|
主机 | 必需 FTP 服务器的主机名 | 字符串 | |
端口 | FTP 服务器的端口 | int | |
directoryName | 起始目录 | 字符串 |
112.1.2. 查询参数(122 参数):
名称 | 描述 | 默认值 | 类型 |
---|---|---|---|
binary (common) | 指定文件传输模式、BINARY 或 ASCII。默认为 ASCII (false)。 | false | 布尔值 |
charset (common) | 此选项用于指定文件的编码。您可以在消费者上使用此选项,指定文件的编码,允许 Camel 知道它应在访问文件内容时加载文件内容。在编写文件时,您也可以使用此选项来指定同时写入该文件的 charset。请记住,在编写文件 Camel 时,可能需要将消息内容读到内存中,才能将数据转换为配置的 charset,因此如果您有大量消息,则不要使用它。 | 字符串 | |
disconnect (common) | 使用后是否要与远程 FTP 服务器断开连接。断开连接将仅断开当前与 FTP 服务器的连接。如果您有一个要停止的消费者,则需要停止 consumer/route。 | false | 布尔值 |
doneFileName (common) | 生产者:如果提供,则 Camel 将在写入原始文件时编写完第 2 个文件。完成的文件将为空。这个选项配置要使用的文件名。可以指定固定名称。或者您可以使用动态占位符。完成的文件将始终写在与原始文件相同的文件夹中。消费者:如果提供,Camel 仅在文件存在时使用文件。这个选项配置要使用的文件名。可以指定固定名称。或者,您可以使用动态占位符。done 文件始终位于与原始文件相同的文件夹中。仅支持 $file.name 和 $file.name.noext 作为动态占位符。 | 字符串 | |
fileName (common) | 使用文件语言等表达式动态设置文件名。对于消费者,它用作文件名过滤器。对于生成者,它用于评估要写入的文件名。如果设置了表达式,它将优先于 CamelFileName 标头。(注:标题本身也可以是表达式)。表达式选项支持 String 和 Expression 类型。如果表达式是 String 类型,则始终使用 File Language 来评估它。如果表达式是 Expression 类型,则使用指定的 Expression 类型 - 这允许您,使用 OGNL 表达式。对于消费者,您可以使用它来过滤文件名,因此您可以利用 File Language 语法:mydata-$date:now:yyyyMMdd.txt 实例消耗了现在的文件。生产者支持 CamelOverruleFileName 标头,它优先于任何现有的 CamelFileName 标头;CamelOverruleFileName 是一个仅使用的标头,因此可以更轻松地避免临时存储 CamelFileName,之后必须恢复它。 | 字符串 | |
passiveMode (common) | 设置被动模式连接。默认为 active 模式连接。 | false | 布尔值 |
separator (common) | 设置要使用的路径分隔符。Unix = 使用 unix 样式路径分隔符 Windows = 使用 Windows 样式路径分隔符 Auto = (默认)在文件名中使用现有路径分隔符 | UNIX | PathSeparator |
transferLoggingInterval Seconds (common) | 配置日志记录 in-flight 的上传和下载操作时使用的间隔(以秒为单位)。当操作需要更长的时间时,这用于日志记录进度。 | 5 | int |
transferLoggingLevel (common) | 配置日志级别,以便在记录上传和下载操作的进度时使用。 | DEBUG | LoggingLevel |
transferLoggingVerbose (common) | 配置上传和下载操作进度的执行详细(细粒度)日志记录。 | false | 布尔值 |
fastExistsCheck (common) | 如果将此选项设置为 true,则 camel-ftp 将直接使用 list 文件来检查该文件是否存在。由于有些 FTP 服务器可能不支持直接列出文件,如果 选项为 false,则 camel-ftp 将使用旧方法来列出该目录,并检查该文件是否存在。这个选项还影响 readLock=changed 来控制它是否执行快速检查来更新文件信息。如果 FTP 服务器有大量文件,这可用于加快进程速度。 | false | 布尔值 |
bridgeErrorHandler (consumer) | 允许将消费者桥接到 Camel 路由错误处理程序,这意味着当消费者试图选择传入消息或类似信息时发生异常,现在将作为消息处理并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.ExceptionHandler 来处理例外情况,该处理程序将被记录在 WARN 或 ERROR 级别,并忽略。 | false | 布尔值 |
delete (consumer) | 如果为 true,则该文件会在成功处理后删除。 | false | 布尔值 |
moveFailed (consumer) | 根据简单语言设置移动失败表达式。例如,要将文件移动到 .error 子目录,请使用: .error。注意:当将文件移动到故障位置 Camel 将处理错误时,不会再次获取该文件。 | 字符串 | |
noop (consumer) | 如果为 true,则文件不会以任何方式移动或删除。这个选项适用于只读数据,或用于 ETL 类型要求。如果 noop=true,Camel 也会设置 idempotent=true,以避免通过和再次消耗同一文件。 | false | 布尔值 |
preMove (consumer) | 表达式(如文件语言)用于在处理前动态设置文件名。例如,要将 in-progress 文件移到订购目录中,将此值设置为 order。 | 字符串 | |
preSort (consumer) | 启用 pre-sort 后,消费者将在轮询期间对文件和目录名称进行排序,该名称从文件系统检索。如果您需要按排序的顺序对文件进行操作,您可能需要执行此操作。预排序在消费者开始过滤前执行,并接受 Camel 处理的文件。这个选项是 default=false 表示禁用。 | false | 布尔值 |
recursive (consumer) | 如果某个目录,也会在所有子目录中查找文件。 | false | 布尔值 |
resumeDownload (consumer) | 配置是否启用了恢复下载。FTP 服务器必须支持此设置(几乎所有 FTP 服务器都支持它)。此外,必须配置 localWorkDirectory 选项,以便下载的文件存储在本地目录中,而且必须启用选项二进制文件,这是支持恢复下载所必需的。 | false | 布尔值 |
sendEmptyMessageWhenIdle (consumer) | 如果轮询使用者没有轮询任何文件,您可以启用此选项来发送空消息(无正文)。 | false | 布尔值 |
streamDownload (consumer) | 设置在不使用本地工作目录时要使用的下载方法。如果设置为 true,则远程文件会在读取时流传输到路由。当设置为 false 时,远程文件会在发送到路由之前加载到内存中。 | false | 布尔值 |
directoryMustExist (consumer) | 与 startDirectoryMustExist 类似,但在轮询递归子目录的过程中适用。 | false | 布尔值 |
download (consumer) | FTP 使用者是否应下载该文件。如果此选项设为 false,则消息正文将为空,但消费者仍会触发 Camel Exchange,其中包含文件名称、文件大小等详细信息。只是不会下载该文件。 | false | 布尔值 |
exceptionHandler (consumer) | 要让使用者使用自定义例外处理程序:请注意,如果启用了 bridgeErrorHandler 选项,则此选项不使用。默认情况下,消费者将处理异常,其记录在 WARN 或 ERROR 级别中,并忽略。 | ExceptionHandler | |
exchangePattern (consumer) | 在消费者创建交换时设置交换模式。 | ExchangePattern | |
handleDirectoryParser AbsoluteResult (consumer) | 如果目录解析程序产生了绝对路径,则允许使用者设置在路径中处理子文件夹和文件的方式。因此,一些 FTP 服务器可能会用绝对路径返回文件名,如果是,那么 FTP 组件需要通过将返回的路径转换为相对路径来处理此目的。 | false | 布尔值 |
ignoreFileNotFoundOr PermissionError (consumer) | 是否忽略何时(在下载文件时列出目录中的文件)或下载文件,这些文件不存在或因为权限错误。默认情况下,当目录或文件不存在或权限不足时,会抛出异常。将这个选项设置为 true 可忽略它。 | false | 布尔值 |
inProgressRepository (consumer) | 可插拔式存储库 org.apache.camel.spi.IdempotentRepository.in-progress 存储库用于考虑被消耗的进度文件的当前。默认情况下,使用基于内存的存储库。 | IdempotentRepository | |
localWorkDirectory (consumer) | 使用时,可以使用本地工作目录直接将远程文件内容存储在本地文件中,以避免将内容加载到内存中。这非常有用,如果您使用一个非常大的远程文件,从而可以节省内存。 | 字符串 | |
onCompletionException Handler (consumer) | 使用自定义 org.apache.camel.spi.ExceptionHandler 处理在完成过程中发生的任何抛出异常,供消费者执行提交或回滚。默认实现将在 WARN 级别记录任何异常并忽略。 | ExceptionHandler | |
pollStrategy (consumer) | 可插拔 org.apache.camel.PollingConsumerPollingStrategy 允许您提供自定义实施来控制在轮询操作期间通常会发生错误处理,然后再创建交换并在 Camel 中路由。 | PollingConsumerPoll Strategy | |
processStrategy (consumer) | 可插拔 org.apache.camel.component.file.GenericFileProcessStrategy 允许您实施自己的 readLock 选项或类似选项。也可以在使用文件之前满足特殊条件时使用,如存在特殊就绪的文件。如果设置了这个选项,则不会应用 readLock 选项。 | GenericFileProcess Strategy | |
receiveBufferSize (consumer) | 仅用于 FTPClient 的接收(下载)缓冲区大小 | 32768 | int |
startingDirectoryMustExist (consumer) | 启动目录是否必须存在。请记住,autoCreate 选项是默认启用的,这意味着如果启动目录不存在,则启动目录通常会自动创建。您可以禁用 autoCreate 并启用它,以确保起始目录必须存在。如果目录不存在,将抛出异常。 | false | 布尔值 |
useList (consumer) | 是否在下载文件时允许使用 LIST 命令。默认为 true。在某些情况下,您可能想要下载特定的文件,不允许使用 LIST 命令,因此您可以将这个选项设置为 false。请注意,在使用此选项时,要下载的特定文件不包括元数据信息,如文件大小、时间戳、权限等,因为这些信息只能在使用 LIST 命令时检索。 | true | 布尔值 |
fileExist (producer) | 如果文件名称已存在,则该怎么办。override (这是默认设置)替换现有文件。append - 将内容添加到现有文件中。fail - 抛出 GenericFileOperationException,表示已有文件。ignore - 静默忽略问题,且不会覆盖现有文件,但假定所有内容都是 okay。move - 选项需要使用 moveExisting 选项进行配置。选项 eagerDeleteTargetFile 可用于控制移动文件时要执行的操作,并且存在现有文件,否则会导致 move 操作失败。Move 选项将移动任何现有文件,然后再编写目标文件。TryRename 仅在使用 tempFileName 选项时才适用。这允许尝试将该文件从临时名称重命名为实际名称,而无需进行任何存在的检查。对于某些文件系统,特别是 FTP 服务器上,这个检查可能会更快。 | override | GenericFileExist |
flatten (producer) | flatten 用于扁平化文件名路径,以剥离任何前导路径,因此它只是文件名。这样,您便可以将递归地消耗到子目录中,但当您将文件写入另一个目录时,会将文件写入单个目录中。在生成者上将其设置为 true 强制执行 CamelFileName 标头中的任何文件名将被剥离任何前导路径。 | false | 布尔值 |
jailStartingDirectory (producer) | 用于仅向起始目录(和子)写入文件。这默认是启用的,不允许 Camel 将文件写入外部目录(在开箱即用的情况下更为安全)。您可以关闭此选项,以允许将文件写入起始目录之外的目录,如父目录或根文件夹。 | true | 布尔值 |
moveExisting (producer) | 表达式(如文件语言)用于在配置 fileExist=Move 时使用计算文件名。要将文件移动到备份子目录中,只需输入 backup。这个选项只支持以下文件语言令牌:file:name、file:name.ext、file:name.noext、file:onlyname、file:onlyname.noext、file:ext 和 file:parent。请注意,FTP 组件不支持 file:parent,因为 FTP 组件只能将任何现有文件移动到基于当前 dir 作为基础的相对目录。 | 字符串 | |
tempFileName (producer) | 与 tempPrefix 选项相同,但对临时文件名的命名提供更加精细的控制,因为它使用文件语言。 | 字符串 | |
tempPrefix (producer) | 此选项用于使用临时名称写入文件,然后在写入完成后将其重命名为实际名称。可用于识别正在写入的文件,也可避免消费者(不使用专用读取锁定)读取进度文件。在上传大型文件时,FTP 通常使用 FTP。 | 字符串 | |
allowNullBody (producer) | 用于指定文件写入过程中是否允许 null 正文。如果设置为 true,则会创建一个空文件,如果设为 false,并尝试将 null 正文发送到文件组件,则将抛出 'Cannot write null body to file.' 的 GenericFileWriteException。如果 fileExist 选项被设置为 'Override',则该文件将被截断,如果设为 附加该文件,则该文件将保持不变。 | false | 布尔值 |
chmod (producer) | 允许您在存储的文件上设置 chmod。例如 chmod=640。 | 字符串 | |
disconnectOnBatchComplete (producer) | 批处理上传完成后是否要断开与远程 FTP 服务器的连接。disconnectOnBatchComplete 将仅断开当前与 FTP 服务器的连接。 | false | 布尔值 |
eagerDeleteTargetFile (producer) | 是否强制删除任何现有目标文件。这个选项仅在使用 fileExists=Override 和 tempFileName 选项时才适用。您可以使用此选项禁用(将其设置为 false)在编写 temp 文件前删除目标文件。例如,您可以编写大文件,并且希望目标文件在 temp 文件被写入期间存在。这样可保证仅删除目标文件,直到最后一次时间之前,只需将 temp 文件重命名为目标文件名之前。这个选项还用于控制是否在启用 fileExist=Move 时删除任何现有的文件,并且存在现有文件。如果此选项 copyAndDeleteOnRenameFails false,则现有文件存在时会抛出异常(如果其为 true),则在移动操作前会删除现有文件。 | true | 布尔值 |
keepLastModified (producer) | 将保留来自源文件的最后修改的时间戳(如果有)。将使用 Exchange.FILE_LAST_MODIFIED 标头来定位时间戳。此标头可以包含 java.util.Date 或 long (时间戳)。如果时间戳存在,且启用了 选项,它将在写入的文件上设置这个时间戳。注意:此选项仅适用于文件制作者。您不能将此选项与任何 ftp producer 一起使用。 | false | 布尔值 |
moveExistingFileStrategy (producer) | 策略(Custom Strategy)用于移动带有特殊命名令牌的文件,以便在配置了 fileExist=Move 时使用。默认情况下,如果没有提供自定义策略,则使用实现 | FileMoveExisting 策略 | |
sendNoop (producer) | 在上传文件到 FTP 服务器之前,是否将 noop 命令作为预写检查发送。这默认是启用的,因为连接的验证仍然有效,允许静默重新连接,以便能够上传该文件。但是,如果这会导致问题,您可以关闭这个选项。 | true | 布尔值 |
activePortRange (advanced) | 在 active 模式中设置客户端侧端口范围。语法为:minPort-maxPort Both 端口号包含,例如 10000-19999 以包含所有 1xxxx 端口。 | 字符串 | |
autoCreate (advanced) | 在文件的路径名称中自动创建缺少的目录。对于文件消费者,这意味着创建起始目录。对于文件制作者,这意味着应写入文件的目录。 | true | 布尔值 |
bufferSize (advanced) | 写入缓冲区大小(以字节为单位)。 | 131072 | int |
connectTimeout (advanced) | 设置等待 FTPClient 和 JSCH 使用的连接的连接超时 | 10000 | int |
ftpClient (advanced) | 使用自定义 FTPClient 实例 | FTPClient | |
ftpClientConfig (advanced) | 要使用 FTPClientConfig 的自定义实例来配置端点应使用的 FTP 客户端。 | FTPClientConfig | |
ftpClientConfigParameters (advanced) | FtpComponent 用来为 FTPClientConfig 提供附加参数 | Map | |
ftpClientParameters (advanced) | 由 FtpComponent 用来为 FTPClient 提供附加参数 | Map | |
maximumReconnectAttempts (advanced) | 指定在尝试连接到远程 FTP 服务器时 Camel 执行的最大重新连接尝试。使用 0 禁用此行为。 | int | |
reconnectDelay (advanced) | millis Camel 中的延迟会在执行重新连接尝试前等待。 | long | |
siteCommand (advanced) | 设置在成功登录后要执行的可选站点命令。可以使用新行字符分隔多个站点命令。 | 字符串 | |
soTimeout (advanced) | 设置仅由 FTPClient 使用的 so timeout | 300000 | int |
stepwise (advanced) | 设置在下载文件时,还是在上传文件到目录时,我们是否应该对目录进行循环更改。例如,如果您因为安全原因无法更改 FTP 服务器上的目录,您可以禁用它。 | true | 布尔值 |
同步 (advanced) | 设置是否应严格使用同步处理,或者 Camel 允许使用异步处理(如果受支持)。 | false | 布尔值 |
throwExceptionOnConnect Failed (advanced) | 如果连接失败(不包括)默认异常,并且记录 WARN,则应抛出异常。您可以使用它来启用抛出异常,并处理 org.apache.camel.spi.PollingConsumerPollStrategy 回滚方法中引发的异常。 | false | 布尔值 |
timeout (advanced) | 设置用于只等待 FTPClient 使用的回复的数据超时 | 30000 | int |
antExclude (filter) | Ant 样式过滤器排除。如果使用 antInclude 和 antExclude,则 antExclude 优先于 antInclude。可以使用逗号分隔的格式指定多个排除。 | 字符串 | |
antFilterCaseSensitive (filter) | 在 ant 过滤器中设置问题单敏感标记 | true | 布尔值 |
antInclude (filter) | Ant 样式过滤器包含.可以使用逗号分隔的格式指定多个包含。 | 字符串 | |
eagerMaxMessagesPerPoll (filter) | 允许控制 maxMessagesPerPoll 的限制是否为 eager。如果为 eager,则限制在文件扫描期间。其中为 false 将扫描所有文件,然后执行排序。将此选项设置为 false 可首先对所有文件进行排序,然后限制轮询。请注意,这需要较高的内存用量,因为所有文件详情都在内存中执行排序。 | true | 布尔值 |
exclude (filter) | 用于排除文件,如果文件名与正则表达式模式匹配(匹配是相同的)。请注意,如果您使用符号(如加号),如果将其配置为 endpoint uri,则需要使用 RAW ()语法进行配置。有关配置 endpoint uris 的详情 | 字符串 | |
filter (filter) | 可插拔过滤器作为 org.apache.camel.component.file.GenericFileFilter 类。如果过滤器在其 accept ()方法中返回 false,则将跳过文件。 | GenericFileFilter | |
filterDirectory (filter) | 根据简单语言过滤目录。例如,要过滤当前日期,您可以使用一个简单的日期模式,如 $date:now:yyyMMdd | 字符串 | |
filterFile (filter) | 根据简单语言过滤文件。例如,要过滤文件大小,您可以使用 $file:size 5000 | 字符串 | |
idempotent (filter) | 使用 Idempotent Consumer EIP 模式的选项让 Camel 跳过已经处理的文件。默认情况下,将使用基于内存的 LRUCache 来保存 1000 条目。如果 noop=true,则同时启用幂等性,以避免再次消耗同一文件。 | false | 布尔值 |
idempotentKey (filter) | 使用自定义幂等密钥。默认情况下,使用文件的绝对路径。您可以使用文件语言,例如要使用文件名和文件大小,您可以: idempotentKey=$file:name-$file:size | 字符串 | |
idempotentRepository (filter) | 可插拔存储库 org.apache.camel.spi.IdempotentRepository,如果未指定,则默认使用 MemoryMessageIdRepository,并且 idempotent 为 true。 | IdempotentRepository | |
Include (filter) | 用于包括文件,如果文件名与正则表达式模式匹配(匹配区分大小写)。请注意,如果您使用符号(如加号),如果将其配置为 endpoint uri,则需要使用 RAW ()语法进行配置。有关配置 endpoint uris 的详情 | 字符串 | |
maxDepth (filter) | 递归处理目录时要遍历的最大深度。 | 2147483647 | int |
maxMessagesPerPoll (filter) | 定义每个轮询收集的最多消息。默认情况下,没有设置最大值。可用于设置限制,例如 1000 个,以避免启动有数千个文件的服务器。将值设为 0 或负数设置为禁用它。注意:如果此选项正在使用,则文件和 FTP 组件将在任何排序之前进行限制。例如,如果您有 100000 文件并使用 maxMessagesPerPoll=500,则只有前 500 个文件会被提取,然后排序。您可以使用 eagerMaxMessagesPerPoll 选项,并将其设置为 false 以允许首先扫描所有文件,然后在之后排序。 | int | |
minDepth (filter) | 递归处理目录时开始处理的最小深度。使用 minDepth=1 表示基础目录。使用 minDepth=2 表示第一个子目录。 | int | |
move (filter) | 表达式(如简单语言)用于在处理后移动文件名时动态设置文件名。要将文件移动到 .done 子目录中,只需输入 .done。 | 字符串 | |
exclusiveReadLockStrategy (lock) | 可插拔 read-lock 作为 org.apache.camel.component.file.GenericFileExclusiveReadLockStrategy 实现。 | GenericFileExclusive ReadLockStrategy | |
readLock (lock) | 供消费者使用,仅当文件上有独占的 read-lock (例如,该文件不是 in-progress 或被写入)时轮询文件。Camel 将等待文件锁定被赋予。此选项在策略中提供构建:none - No read lock is in use markerFile - Camel 创建一个标记文件(fileName.camelLock),然后在其上保存锁定。这个选项不适用于 FTP 组件更改 - Changed 使用文件长度/修改时间戳来检测文件当前是否正在复制。至少将使用 1 sec 来确定这一点,因此此选项不能像其他人一样快消耗文件,但可以更可靠,因为 JDK IO API 无法始终确定文件当前是否被其他进程使用。选项 readLockCheckInterval 可用于设置检查频率。fileLock - 使用 java.nio.channels.FileLock。这个选项在 Windows 或 FTP 组件中不可用。当通过 mount/share 访问远程文件系统时,应避免使用这种方法,除非该文件系统支持分布式文件锁定。重命名是,使用尝试将文件重命名为测试(如果我们可以获得专用的 read-lock. idempotent - (仅适用于文件组件)是幂等的Repository 作为 read-lock。这允许在幂等存储库实现支持集群时支持集群读取锁定。幂等更改 - (仅适用于文件组件)使用 idempotentRepository 并更改为组合的 read-lock。这允许在幂等存储库实施支持集群时使用读取锁定。幂等存储库 - (仅适用于文件组件) idempotent-rename 用于使用 idempotentRepository,并重命名为 combined read-lock。这允许使用支持集群的读取锁定,如果幂等存储库实施支持它。注意:各种读取锁定并不适用于所有在集群模式下工作,其中不同节点上的并发消费者对共享文件系统上的相同文件竞争。flagsFile 使用接近 atomic 操作来创建空标记文件,但无法保证在集群中工作。fileLock 可以更好地工作,但文件系统需要支持分布式文件锁定,以此类推。如果幂等存储库支持集群(如 Hazelcast 组件或 Infinispan),则使用幂等的读取锁定可以支持集群。 | none | 字符串 |
readLockCheckInterval (lock) | 如果读取锁定支持,则 read-lock 中的间隔为 millis。此间隔用于尝试获取读取锁之间的睡眠状态。例如,在使用更改的读取锁定时,您可以为文件设置更高的间隔周期,以便进行速度较慢的写入。默认值 1 sec。如果生成者的写入速度非常慢,则可能太快。注意:对于 FTP,默认的 readLockCheckInterval 是 5000。readLockTimeout 值必须大于 readLockCheckInterval,但 thumb 规则是有一个超时,它至少比 readLockCheckInterval 高 2 倍。这需要确保允许读取锁定进程在达到超时时间前尝试获取锁定。 | 1000 | long |
readLockDeleteOrphanLock Files (lock) | 如果 Camel 没有正确关闭(如 JVM 崩溃),在启动后是否应该使用标记文件读取锁定删除任何孤立的读取锁定文件(如 JVM 崩溃)。如果将此选项转换为 false,则任何孤立的锁文件将导致 Camel 不尝试选择该文件,也可能是因为另一个节点同时从同一共享目录读取文件。 | true | 布尔值 |
readLockIdempotentRelease Async (lock) | 延迟发行任务是否应同步或异步。请参阅 readLockIdempotentReleaseDelay 选项的更多详情。 | false | 布尔值 |
readLockIdempotentRelease AsyncPoolSize (lock) | 使用异步发行任务时调度的线程池中的线程数量。几乎所有用例中,使用默认的 1 个核心线程应该已经足够了,只有在更新幂等存储库时,或者有大量要处理的文件时,才会将其设置为更高的值。如果您通过配置 readLockIdempotentReleaseExecutorService 选项使用共享线程池,这个选项不会被使用。请参阅 readLockIdempotentReleaseDelay 选项的更多详情。 | int | |
readLockIdempotentRelease Delay (lock) | 是否延迟 millis 期间内发行任务。这可用于在带有共享幂等存储库的主动/主动集群场景中,延迟发行任务以扩展窗口,因为存在竞争条件,因此无法扫描并获取相同的文件。通过扩展发行版本任务的 time-window 有助于防止这种情况。只有在将 readLockRemoveOnCommit 配置为 true 时才需要延迟。 | int | |
readLockIdempotentRelease ExecutorService (lock) | 使用自定义和共享线程池进行异步发行任务。请参阅 readLockIdempotentReleaseDelay 选项的更多详情。 | ScheduledExecutor Service | |
readLockLoggingLevel (lock) | 无法获取读取锁定时使用的日志记录级别。默认情况下会记录 WARN。您可以更改此级别,例如,OFF 没有任何日志记录。这个选项只适用于 readLock 类型:change, fileLock, idempotent, idempotent-changed, idempotent-rename, rename。 | DEBUG | LoggingLevel |
readLockMarkerFile (lock) | 是否使用更改、重命名或专用读取锁定类型的标记文件。默认情况下,使用标志文件来保护获取同一文件的其他进程。通过将这个选项设置为 false 可关闭此行为。例如,如果您不希望 Camel 应用程序将标记文件写入文件系统。 | true | 布尔值 |
readLockMinAge (lock) | 这个选项只适用于 readLock=changed。它允许在尝试获取读取锁定前指定文件的最短期限。例如,使用 readLockMinAge=300s 来要求文件在最后 5 分钟内。这可加快更改的读取锁,因为它将只尝试获取至少给定年龄的文件。 | 0 | long |
readLockMinLength (lock) | 这个选项只适用于 readLock=changed。它允许您配置最小文件长度。默认情况下,Camel 期望文件包含数据,因此默认值为 1。您可以将这个选项设为零,以允许消耗零长度文件。 | 1 | long |
readLockRemoveOnCommit (lock) | 这个选项只适用于 readLock=idempotent。它允许您指定在处理文件成功时是否从幂等存储库中删除文件名条目,以及提交发生。默认情况下,文件不会被删除,这样可确保不会发生任何竞争条件,因此另一个活动节点可能会试图获取该文件。相反,idempotent 存储库可能支持驱除策略,这些策略可在 X 分钟后驱除文件名条目 - 这确保了竞争条件没有问题。请参阅 readLockIdempotentReleaseDelay 选项的更多详情。 | false | 布尔值 |
readLockRemoveOnRollback (lock) | 这个选项只适用于 readLock=idempotent。它指定在处理文件失败时是否从幂等存储库中删除文件名条目,以及进行回滚。如果此选项为 false,则确认文件名条目(就像文件执行提交一样)。 | true | 布尔值 |
readLockTimeout (lock) | 如果 read-lock 支持,则 read-lock 中的可选超时(如果支持)。如果无法授予 read-lock,并且触发超时,则 Camel 将跳过该文件。在下次轮询 Camel 时,将再次尝试 文件,这一次可能被赋予读锁。使用 0 或更低的值来指示永久。目前 fileLock,更改并重命名支持超时。注意:对于 FTP,默认的 readLockTimeout 值为 20000,而不是 10000。readLockTimeout 值必须大于 readLockCheckInterval,但 thumb 规则是有一个超时,它至少比 readLockCheckInterval 高 2 倍。这需要确保允许读取锁定进程在达到超时时间前尝试获取锁定。 | 10000 | long |
backoffErrorThreshold (scheduler) | 在 backoffMultipler 应该 kick-in 之前发生的后续错误轮询(因为某些错误)的数量。 | int | |
backoffIdleThreshold (scheduler) | 在 backoffMultipler 应该 kick-in 之前应该发生的后续空闲轮询数量。 | int | |
backoffMultiplier (scheduler) | 如果一行中有很多后续空闲/errors,则让调度的轮询消费者避退。然后,倍数是在下一次实际尝试再次发生前跳过的轮询数量。当使用这个选项时,还必须配置 backoffIdleThreshold 和/或 backoffErrorThreshold。 | int | |
delay (scheduler) | 下一次轮询前的时间(毫秒)。您还可以使用单位来指定时间值,如 60s (60 秒)、5m30s (5 分钟和 30 秒)和 1h (1 小时)。 | 500 | long |
greedy (scheduler) | 如果启用了 greedy,如果上一个运行轮询 1 或更多消息,则 ScheduledPollConsumer 将立即运行。 | false | 布尔值 |
initialDelay (scheduler) | 第一次轮询开始前的毫秒。您还可以使用单位来指定时间值,如 60s (60 秒)、5m30s (5 分钟和 30 秒)和 1h (1 小时)。 | 1000 | long |
runLoggingLevel (scheduler) | 消费者在轮询时记录 start/complete log 行。这个选项允许您为其配置日志级别。 | TRACE | LoggingLevel |
scheduledExecutorService (scheduler) | 允许配置用于消费者的自定义/共享线程池。默认情况下,每个使用者都有自己的单线程线程池。 | ScheduledExecutor Service | |
scheduler (scheduler) | 使用 camel-spring 或 camel-quartz2 组件的 cron 调度程序 | none | ScheduledPollConsumer Scheduler |
schedulerProperties (scheduler) | 在使用自定义调度程序或任何基于 Spring 的调度程序时配置附加属性。 | Map | |
startScheduler (scheduler) | 调度程序是否应自动启动。 | true | 布尔值 |
timeUnit (scheduler) | initialDelay 和 delay 选项的时间单位。 | MILLISECONDS | TimeUnit |
useFixedDelay (scheduler) | 控制是否使用固定延迟或固定率。详情请参阅 JDK 中的 ScheduledExecutorService。 | true | 布尔值 |
shuffle (sort) | 要表示文件列表(按随机顺序排列) | false | 布尔值 |
sortBy (sort) | 使用文件语言进行内置排序。支持嵌套排序,因此您可以按文件名排序,并且按修改日期排序第二组。 | 字符串 | |
sorter (sort) | 可插拔排序器作为 java.util.Comparator 类。 | 比较器 | |
帐户 (安全性) | 用于登录的帐户 | 字符串 | |
disableSecureDataChannel Defaults (security) | 使用安全数据频道时使用这个选项禁用默认选项。这可让您完全控制应使用 execPbsz 和 execProt 设置。默认值为 false | false | 布尔值 |
execPbsz (security) | 使用安全数据频道时,您可以设置 exec 保护缓冲区大小 | Long | |
execProt (security) | 执行保护级别 PROT 命令。C - Clear S - Safe (SSL protocol only) E - Confidential (SSL protocol only) P - Private | 字符串 | |
ftpClientKeyStore Parameters (security) | 设置密钥存储参数 | Map | |
ftpClientTrustStore Parameters (security) | 设置信任存储参数 | Map | |
isImplicit (security) | 设置安全模式(Implicit/Explicit). true - Implicit Mode / False - Explicit Mode | false | 布尔值 |
password (security) | 用于登录的密码 | 字符串 | |
securityProtocol (security) | 设置底层的安全协议。 | TLS | 字符串 |
sslContextParameters (security) | 获取 JSSE 配置,覆盖 FtpsEndpoint#ftpClientKeyStoreParameters、ftpClientTrustStoreParameters 和 FtpsConfiguration#getSecurityProtocol ()中的任何设置。 | SSLContextParameters | |
用户名 (安全性) | 用于登录的用户名 | 字符串 |