通过代理方法选择端点

时间:2015-05-28 14:07:11

标签: java spring apache-camel

我有java界面:

public interface IMyService
{

   String method1(Document document) throws Exception;

   String method2(Document document) throws Exception;
}

我将它用作骆驼代理:

<camel:proxy id="myService"
             serviceInterface="pl.package.service.IMyService"
             serviceUrl="direct:myService"/>

在这条路线中:

<route id="myRoute" autoStartup="true">
    <from uri="direct:myService"/>
    <process ref="postProcessor"/>
    <camel:to uri="apiEndpoint"/>
    <camel:process ref="responseProcessor"/>
</route>

现在,如何通过IMyService方法选择不同的端点?例如:

        <route id="myRoute" autoStartup="true">
        <from uri="direct:myService"/>
        <process ref="postProcessor"/>
        if method == method1
            {
            <camel:to uri="apiEndpoint"/>
            }
            else
            {
            <camel:to uri="otherApiEndpoint"/>
            }

        <camel:process ref="responseProcessor"/>
    </route>

1 个答案:

答案 0 :(得分:0)

驼峰代理实际上只是一种java bean的一种方式,它调用一个实现,结果证明它是骆驼,让它看起来很干净,而不是非常混乱。您可能希望让它调用发送消息正文的路由,指示您需要的操作,然后使用选项。

from("direct:start")
    .choice()
        .when(body().isEqualTo("method1"))
            .to("my processing work")
        .when(body().isEqualTo("method2"))
            .to("my other processing work")
    .otherwise()
        .to("well no proper method was called");