我正在尝试编写骆驼批处理:
- 处理特定目录中的所有文件以及每个文件:
- 使用 XSD 架构验证 XML
- 解组不同的零件和过程数据
- 不要停止异常
- 如果发生至少一个错误,则移至最后失败的目录,否则移至完成
我遇到的困难:
- 文件组件允许在完成/失败目录上自动移动文件,但是一旦您使用拆分/聚合器,文件总是移动到完成,甚至不等待聚合完成。
- 管理异常并不直观
- 拆分和聚合器是噩梦,文档中没有足够的“真实世界”示例
- 复杂结构上的 XML 标记化使我们无法理解
当然,我遇到这些问题是因为我是 Apache Camel 的新手 :)
我想做的事情的想法:
- 文件组件(好的)
- XSD 验证(好的,如果错误,文件组件移动到失败)
- 进行多次拆分/多播以读取 XML,当发生错误时,我们忽略异常,保持标头错误,然后继续(不太好,我可以读取但无法正确聚合)
- 我们聚合(实际上没有什么可聚合的,我们只想检查所有标题)
- 如果出错,我们明确地移动到失败的目录
此示例的简化 XML:
<root>
<library></library>
<books year="2015">
<book></book>
<book></book>
... many
</books>
<books year="2016">
<book></book>
<book></book>
... many
</books>
... many years
</root>
您将如何使用这样的 XML 构造批处理? 此外,假设您必须先阅读“库”(并使用管道)。另外,在标题(布尔)中保存错误的想法好吗?
注意:特别感谢克劳斯·易卜生(Claus Ibsen)回复了许多关于 SO 的 Camel 帖子,但也请尽量不要只提供 Apache Camel 文档上的简单链接 :) 真的,对于新手来说,Apache Camel 文档 sux。
谢谢