java - 验证后在分离器中找不到处理器。

标签 java apache-camel camel-ftp

我有一个 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,但仍然遇到相同的错误。

最佳答案

我不知道 validator 是如何工作的,但如果正在更改消息正文,请尝试将其存储为 header 或属性,例如: .setHeader("headerName",simple("${body}")) 和 validator .setBody(simple("${header.headerName}"))

之后

关于java - 验证后在分离器中找不到处理器。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31838788/

相关文章:

java - 如何从处理器内的 Apache Camel 中的路由获取响应并在处理器内调用该路由?

java - 尝试通过Tomcat内部的 Camel 调用外部HTTP Post请求

java - Apache Camel : Download Multiple Files at once using SFTP component

java - 在开始路由之前交叉检查camel ftp/sftp身份验证

java - 我应该使用 ArrayList.clear() 还是创建一个新列表?

java - 需要帮助让这个简单的华氏度到摄氏度应用程序在 Java 中工作

java - 为什么java枚举中的一些常量字段不是值?

java - 在 catch 子句中再次重新抛出异常后会发生什么?

java - 为什么我的属性在这个camel sftp 路由中没有解析?

java - 如何在 Camel 测试中模拟 AMQP 消费者?