Apache camel 当文件夹不可访问时,驼峰文件使用者

Apache camel 当文件夹不可访问时,驼峰文件使用者,apache-camel,Apache Camel,何乐而不为 在驼峰上下文无权访问的文件夹上使用文件使用者时(例如,使用chmod a-rwx test/locked),上下文将正常启动(甚至没有警告),但也不会拾取文件夹中的任何文件(好吧,应该如何启动) 当文件组件无法访问文件夹时,是否有方法在启动时(或至少在轮询文件夹时)引发错误 否则,我必须在配置路由之前使用手动java代码进行检查,我希望避免这种情况 感谢并问候 Chris否则,在配置路由之前,我必须使用手动java代码进行检查,这是我想要避免的 您可以对端点使用PollingCons

何乐而不为

在驼峰上下文无权访问的文件夹上使用文件使用者时(例如,使用
chmod a-rwx test/locked
),上下文将正常启动(甚至没有警告),但也不会拾取文件夹中的任何文件(好吧,应该如何启动)

当文件组件无法访问文件夹时,是否有方法在启动时(或至少在轮询文件夹时)引发错误

否则,我必须在配置路由之前使用手动java代码进行检查,我希望避免这种情况

感谢并问候
Chris

否则,在配置路由之前,我必须使用手动java代码进行检查,这是我想要避免的

您可以对端点使用PollingConsumerPollStrategy来检查路径是否存在访问问题,然后引发错误

public class FileAccessPollingConsumerPollStrategy extends DefaultPollingConsumerPollStrategy{
   public boolean begin(Consumer consumer, Endpoint endpoint) {

File pollingDirectory = ((FileEndpoint) endpoint).getFile();

//check your access with poillingDirectory and raise any error.

        return true;
    }
}
然后从(“file://inbox/?pollStrategy=#fileAccessPollingConsumerPollStrategy“

否则,我必须在配置路由之前使用手动java代码进行检查,我希望避免这种情况

您可以对端点使用PollingConsumerPollStrategy来检查路径是否存在访问问题,然后引发错误

public class FileAccessPollingConsumerPollStrategy extends DefaultPollingConsumerPollStrategy{
   public boolean begin(Consumer consumer, Endpoint endpoint) {

File pollingDirectory = ((FileEndpoint) endpoint).getFile();

//check your access with poillingDirectory and raise any error.

        return true;
    }
}

然后从(“file://inbox/?pollStrategy=#fileAccessPollingConsumerPollStrategy“

我决定在配置路由之前执行以下代码,从而确保可以访问路由:

Path Path=Path.get(folderPath);
//我们不允许的唯一情况是文件夹存在且不可读
布尔canAccess=!Files.exists(路径)| | Files.isReadable(路径);
如果(!canAccess){
抛出新的IllegalArgumentException(“无法初始化路由,因为文件夹“”
+无法访问baseFolder+“\”。当它不存在时可能会发生这种情况
+“或当前用户没有读取权限”);
}
我还在apache jira中创建了一个问题,以在将来添加该功能:

谢谢大家的建议

Chris

我决定在配置路由之前执行以下代码,从而确保可以访问路由:

Path Path=Path.get(folderPath);
//我们不允许的唯一情况是文件夹存在且不可读
布尔canAccess=!Files.exists(路径)| | Files.isReadable(路径);
如果(!canAccess){
抛出新的IllegalArgumentException(“无法初始化路由,因为文件夹“”
+无法访问baseFolder+“\”。当它不存在时可能会发生这种情况
+“或当前用户没有读取权限”);
}
我还在apache jira中创建了一个问题,以在将来添加该功能:

谢谢大家的建议

Chris

不,目前没有此类支持。您指的是在camel文件端点中设置的起始目录?我们可能会为此增加支持。欢迎您登录JIRA并为此类新功能编写修补程序/PR。目前没有此类支持。您指的是在camel文件端点中设置的起始目录?我们可能会为此增加支持。欢迎您登录JIRA并为一个新的特性在补丁/PR上工作。好点,很可能我们可以考虑将这种功能添加到默认实现中。如果我正确地理解了Debug策略,那么每次轮询完成时都执行这个代码(文件组件默认为半秒),这意味着,错误每秒会引发两次,垃圾邮件会发送到日志中,另一种选择是在代码中停止路由(甚至上下文),这听起来并不是一个好主意。。。有什么我遗漏的吗?是的,这是正确的,所以您希望这种情况在启动期间只发生一次,并导致Camel一起启动失败?我认为如果遇到访问问题,您可以在FileAccessPollingConsumerPollStrategy的begin()方法中插入路由器控制器或Camel上下文来停止路由。顺便说一下,Claus Ibsen是骆驼世界的传奇人物,他可能有更好的建议。好点,很可能我们可以考虑在默认实现中添加这样的功能。如果我正确地理解了Debug策略,那么每次轮询完成时都执行这个代码(文件组件默认为半秒),这意味着,错误每秒会引发两次,垃圾邮件会发送到日志中,另一种选择是在代码中停止路由(甚至上下文),这听起来并不是一个好主意。。。有什么我遗漏的吗?是的,这是正确的,所以您希望这种情况在启动期间只发生一次,并导致Camel一起启动失败?我认为如果遇到访问问题,您可以在FileAccessPollingConsumerPollStrategy的begin()方法中插入路由器控制器或Camel上下文来停止路由。顺便说一句,@Claus Ibsen是骆驼世界的传奇,他可能有更好的建议。