如何在apache camel中全局设置交换属性

时间:2016-07-16 11:48:53

标签: apache-camel apache-karaf apache-servicemix

例如:

from("direct:test")
  .multicast() 
     .to("direct:req1","direct:req2");

from("direct:req1")
  .to(cxf:bean:endpoint1)
  .process("response1");

from("direct:req2")
 .process("requestProcessor2")
 .to(cxf:bean:endpoint2)
 .process(response2);

我是apache camel的新手,我只想知道是否有任何方法可以使用我从endpoint1中获得的响应" requestProcessor2"

2 个答案:

答案 0 :(得分:5)

你可以做这样的事情

    from("direct:test")
            .setProperty("test.body", body())
            .to(cxf:bean:endpoint1)
            .setProperty("endpoint1.body", body())
            .process("response1")
            .setBody(exchangeProperty("test.body"))
            .to("direct:req2")

    from("direct:req2")
            .process("requestProcessor2")
            .to(cxf:bean:endpoint2)
            .process(response2);

您可以将原始正文保存在属性中,也可以从endpoint1保存正文。然后,您可以将交易所发送至:req2,其中包含exhcnage正文中的原始正文,以及您可以访问的属性中的正文形式endpoint1(在处理器或其他位置)。

要访问处理器中的属性:

public void process(final Exchange exchange) throws Exception {

    Object body = exchange.getProperty("endpoint1.body");

}

答案 1 :(得分:0)

您的问题已经有了答案,使用,您可以从交换中获取您想要的路线。还可以考虑在最终路线上移除该物业。