如何释放文件锁(camel exchange)以在异常(损坏的gz文件)上移动它

时间:2014-08-06 11:06:19

标签: apache-camel

我需要实现一个响应ZipException的处理程序来移走损坏的gz文件,否则该路由将无休止地重试解组gz。

问题是,在抛出异常的那一刻,这个文件有一个锁(在linux canWrite()上返回false)并且有Camel锁文件。

是否有一种优雅的Camel方式来说/配置锁定被释放的onException(获取写入权限并删除锁定文件 - 如果有的话)?

目前我的代码看起来像这样:

onException(ZipException.class)
    .handled(true)
    .process(corruptedFileProcessor)
    .stop(); 

提前致谢。

1 个答案:

答案 0 :(得分:2)

以下路由从srcDir读取gzip文件,将解压缩的文件写入destDir(不带.gz扩展名),当发生ZipException时,将文件发送到errorDir。

from("file://srcDir/?delete=true")
        .onException(ZipException.class)
        .handled(true).useOriginalMessage()
        .to("file://errorDir?autoCreate=true")
        .end()
.unmarshal().gzip()
.to("file://destDir?autoCreate=true&fileName=${file:name.noext}");