每当我从fileURI 启动 Camel 路由时,我都会看到 Camel 在文件上获得了“锁定”。例如,如果文件名为myinput.xml,那么 Camel 在其上创建一个“锁定文件”,位于同一目录中,名为myinput.xml.camelLock.
- 这是什么以及为什么骆驼使用它?
- Camel什么时候“释放”锁定文件(删除它)?
- 最重要的是,有没有办法将文件 URI 配置为根本不锁定(如果是,如何)?
每当我从fileURI 启动 Camel 路由时,我都会看到 Camel 在文件上获得了“锁定”。例如,如果文件名为myinput.xml,那么 Camel 在其上创建一个“锁定文件”,位于同一目录中,名为myinput.xml.camelLock.
希望这对你有帮助,我的朋友
消费者使用 readLocks,仅在对文件具有独占读锁时轮询文件(即文件不在进行中或正在写入)。Camel 将等到授予文件锁之后,Camel 创建一个标记文件,然后对其持有锁,因为 JDK IO API 无法始终确定文件当前是否正在被另一个进程使用,所以骆驼维护该锁。选项 readLockCheckInterval 可用于设置检查频率。此选项仅适用于从 Camel 2.8 开始的 FTP 组件。请注意,从 Camel 2.10.1 开始,可以启用 FTP 选项 fastExistsCheck 来加速这个 readLock 策略。
请注意,从 Camel 2.10 开始,读锁发生了变化,fileLock 和 rename 也将使用 markerFile,以确保不会拾取运行在另一个节点(例如集群)上的另一个 Camel 消费者可能正在处理的文件。这仅受文件组件(而不是 ftp 组件)支持。