apache camel filter in xml。在xml中将参数传递给Bean

时间:2014-07-02 11:22:36

标签: java xml spring apache-camel activemq

我是使用activemq和Camel的新手。

我有这些问题:

  1. 我有一个bean和bean方法,由filter过滤。

    <filter>
       <method ref="MyBean" method="CheckReceivedFilesByParameters"/>
       <to uri="direct:b"/>
    </filter>
    

    方法CheckReceivedFilesByParameters返回布尔值。 如果是真的话,下一条路线会成功开始。如何在假的情况下调用路由(直接:b)。我想用xml做到这一点。我试图在标签之外调用方法,但没有运气。

    <to uri="bean:MyBean?method=CheckReceivedFilesByParameters"/>
    <filter>
       <simple>false</simple>
       <to uri="direct:b"/>
    </filter>
    
  2. 如何通过Exchange邮件正确地将参数传递给MyBean方法。什么是最佳做法? 现在我通过创建标题来做,然后在我的方法中我得到headerValues。 我的xml中的示例。

    <setHeader headerName="RouteId">
        <constant>Test1</constant>
    </setHeader>
    

    然后在MyBean方法值中获取标题。 String routeId = exchange.getIn().getHeader("RouteId", String.class);

    是否还有更多优雅的&#34;办法。像传递参数一样。像servlet一样?

      

    的request.getParameter(&#34; PAR1&#34)

  3. 提前致谢。

2 个答案:

答案 0 :(得分:2)

广告1)

如果表达式为true,则filter eip仅路由,例如方法调用返回true。因此,如果方法调用返回false,则过滤器不会路由到“direct:b”。

广告2)

了解参数绑定

答案 1 :(得分:1)

  1. 在我看来,您可能想看看content based routers,这是Camel实施的企业集成模式。使用语法`choice&gt;何时>否则`你基本上可以添加`if&gt;你的骆驼路线的其他风格功能。
  2. 不幸的是,我所知道的并不比那更优雅。您总是可以提供自己的util类/方法来抽象出丑陋的过程:

public class ExchangeHelper{

  public Object getHeader(Exchange exchange, String header){
    return exchange.getIn().getHeader(header, Object.class);
  }

}

我想是什么?