我有一个 Camel 路由,需要从 FTP 接收 XML 文件作为流,对其进行验证并拆分它。
一切正常,一直到验证,但是拆分没有按预期工作。调试时,我发现当原始消息是流时,拆分过程没有找到任何处理器。在我看来,它非常像一个错误。
from("direct:start")
.pollEnrich("ftp://user@host:21?fileName=file.xml&streamDownload=true&password=xxxx&fastExistsCheck=true&soTimeout=300000&disconnect=true")
.to("validator:myXsd.xsd")
.split().tokenizeXML("myTag")
.to(to)
.end();
在这种情况下,我可以看到 Exchange 进入拆分器,但没有找到处理器并且拆分什么也不做。如果我删除验证,行为会有所不同:
from("direct:start")
.pollEnrich("ftp://user@host:21?fileName=file.xml&streamDownload=true&password=xxxx&fastExistsCheck=true&soTimeout=300000&disconnect=true")
.split().tokenizeXML("myTag")
.to(to)
.end();
在这种情况下,分离器工作正常。
此外,如果 XML 文件不是来自流,那么一切都很好。
from("file:file.xml")
.to("validator:myXsd.xsd")
.split().tokenizeXML("myTag")
.to(to)
.end();
我将我的 Camel 版本更新到 2.15.2,但仍然出现相同的错误。