Apache Camel文件队列是否需要NOOP消费者的目录写入权限?

时间:2011-06-15 04:08:40

标签: java apache-camel

我在camel中配置了一个简单的NOOP文件使用者,如下所示:

file:///tst?delay=10000&idempotent=false&include=fileMatch&noop=true

通常,运行camel应用程序的用户不具有/ tst的写入权限,但是对/ tst / fileMatch具有读写权限。不幸的是,我发现camel甚至不会对文件进行轮询,除非它对/ tst具有写入权限。

有解决方法吗?

2 个答案:

答案 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