什么是 Apache Camel 的文件“camelLock”?

Adj*_*ion 7 java file-io apache-camel filelock

每当我从fileURI开始 Camel 路由时,我都会看到 Camel 获得了文件的“锁定”。例如,如果文件名为myinput.xml,则 Camel 在其上创建一个名为.lock 的“锁定文件”,位于同一目录中myinput.xml.camelLock

  1. 这是什么,为什么 Camel 使用它?
  2. Camel 什么时候“释放”锁定文件(删除它)?
  3. 最重要的是,有没有办法将文件 URI 配置为根本不锁定(如果是,如何)?

Gir*_*ish 8

希望这对你有帮助,我的朋友

readLocks 由消费者使用,仅当它对文件具有独占读锁时才轮询文件(即文件不在进行中或正在写入)。Camel 将等到文件锁定被授予,之后 Camel 创建一个标记文件,然后在其上持有一个锁,骆驼维护该锁定,因为 JDK IO API 无法始终确定文件当前是否正在被另一个进程使用。选项 readLockCheckInterval 可用于设置检查频率。此选项仅适用于 Camel 2.8 以后的 FTP 组件。请注意,从 Camel 2.10.1 开始,可以启用 FTP 选项 fastExistsCheck 来加速此 readLock 策略。

请注意,从 Camel 2.10 开始,读取锁发生了变化,fileLock 和 rename 也将使用一个标记文件,以确保不会拾取可能正在另一个节点(例如集群)上运行的另一个 Camel 使用者正在处理的文件。这仅由文件组件(而不是 ftp 组件)支持。