使用Apache Camel,我需要对zip文件中包含的XML文件执行XSD验证,除了导致zip文件转移到错误文件夹的任何异常。
以下(简化)路线适用 * :
from("file:/my/Path&moveFailed=../error").split(new ZipSplitter()).
streaming().filter(header(Exchange.FILE_NAME).endsWith(".xml")).
bean(MyCustomValidator.class).to("validator:schemas/my/schema.xsd").end();
为了提高效率,我已将其调整为使用SEDA进行拉链内容检查:
from("file:/my/Path&moveFailed=../error").split(new ZipSplitter()).
streaming().filter(header(Exchange.FILE_NAME).endsWith(".xml")).
to("seda:validateEvents");
from("seda:validateEvents?concurrentConsumers=20").bean(MyValidator.class).
to("validator:schemas/my/schema.xsd").end();
但是,现在moveFailed
参数不受文件组件的尊重。如果我添加显式onException()
并尝试将文件复制到错误文件夹中,则任何XSD验证失败都会将XML文件(而不是zip文件)复制到错误文件夹中。
如何在维护端点的错误处理的同时执行组件的并行处理?
* 我已经为zip文件内容使用了显式文件名过滤器,否则拆分器会对zip中的每个XML文件执行一次bean验证器,再次 为zip文件本身(?!)。
答案 0 :(得分:0)