按操作路由

时间:2011-04-18 10:04:37

标签: apache-camel esb apache-servicemix

有没有办法通过该消息中指定的操作来路由ServiceMix消息?

我已经尝试使用谷歌搜索但是无法找到任何方法来完成这个简单的任务,也许我在第一时间做错了?

我有一个适配器可以调度两种类型的消息。其他2个适配器必须捕获它们并给出响应。两条消息都具有相同的主体(例如,让它为某些<product>...</product>),但操作不同(例如updatecreate)。如何将消息路由到不同的适配器?

提前致谢。

2 个答案:

答案 0 :(得分:0)

使用Camel XPath谓词(http://camel.apache.org/xpath.html)。例如:

from("queue:products").  
choice().xpath("/product/[@create='true']")).to("queue:create").
otherwise().to("queue:update");

答案 1 :(得分:0)

在这里找到答案:http://fernandoribeiro.eti.br/2009/06/06/multiple-operations-in-apache-camel-routes/

import org.apache.camel.builder.RouteBuilder;

public final class SampleRouteBuilder extends RouteBuilder {
    public void configure() {
        from("jbi:service:http://www.fernandoribeiro.eti.br/SampleService")
            .choice()
                .when(header("jbi.operation")
                    .isEqualTo("{http://www.fernandoribeiro.eti.br}FirstOperation"))
                .when(header("jbi.operation")
                    .isEqualTo("{http://www.fernandoribeiro.eti.br}SecondOperation"));
    }
}