每当我从file
URI 启动 Camel 路由时,我都会看到 Camel 在文件上获得了“锁定”。例如,如果文件名为myinput.xml
,那么 Camel 在其上创建一个“锁定文件”,位于同一目录中,名为myinput.xml.camelLock
.
- 这是什么以及为什么骆驼使用它?
- Camel什么时候“释放”锁定文件(删除它)?
- 最重要的是,有没有办法将文件 URI 配置为根本不锁定(如果是,如何)?
每当我从file
URI 启动 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 组件)支持。