gpt4 book ai didi

java - Apache Camel SEDA 异常处理

转载 作者:行者123 更新时间:2023-12-01 12:55:00 24 4
gpt4 key购买 nike

使用 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 进行 zip 内容检查:

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 validator ,然后再执行一次 用于 zip 文件本身(?!)。

最佳答案

请参阅 shareUnitOfWork 选项

除了使用 SEDA,您还可以在拆分器中使用并行处理。

关于java - Apache Camel SEDA 异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23977010/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com