我在camel中配置了一个简单的NOOP文件使用者,如下所示:
file:///tst?delay=10000&idempotent=false&include=fileMatch&noop=true
通常,运行camel应用程序的用户不具有/ tst的写入权限,但是对/ tst / fileMatch具有读写权限。不幸的是,我发现camel甚至不会对文件进行轮询,除非它对/ tst具有写入权限。
有解决方法吗?
答案 0 :(得分:3)
自上次回答以来,camel文件组件发生了相关更改:
从Camel 2.10开始注意读锁已更改, fileLock 和 重命名也将使用markerFile以及,以确保不会拾取 正在运行的另一个Camel使用者正在处理的文件 另一个节点(例如集群)。这仅受文件支持 组件(不是ftp组件)。
因此,在Camel 2.10或更高版本中,您仍需要写权限才能使用readLock = fileLock。您可以使用readLock=none
,其明显的影响是没有读锁定。
答案 1 :(得分:2)
当我这么累的时候,我不应该问问题。这不起作用的原因(as clearly stated in the component description)是默认的readLock
策略是markerFile
(需要在目录中写入标记文件)。通过将其更改为readLock=fileLock
,我不再需要对目录的写权限来读取文件,因为文件系统锁定放在正在读取的文件上。
工作URI是:
file:///tst?delay=10000&idempotent=false&include=fileMatch&noop=true&readLock=fileLock