使用camel-restlet进行路由问题

时间:2014-04-07 12:48:10

标签: apache-camel restlet

我正在使用camel和camel-restlet组件来路由RESTFul Web服务。我的路线配置如下:

<from uri="restlet:/camel/my/path/{param1}/{param2}?restletMethods=PUT&throwExceptionOnFailure=false" />
<loadBalance inheritErrorHandler="false">
    <failover roundRobin="true" maximumFailoverAttempts="2">
    <exception>java.io.IOException</exception>
    </failover>
    <to uri="http://server1:8080/my/path/${header.param1}/${header.param2}?bridgeEndpoint=true&throwExceptionOnFailure=false" />
    <to uri="http://server2:8080/my/path/${header.param1}/${header.param2}?bridgeEndpoint=true&throwExceptionOnFailure=false" />
</loadBalance>

我有一些输入路由配置,如:

restlet:/camel/my/path/{param1}/{param2}?restletMethods=PUT
restlet:/camel/my/path/param1/{param2}?restletMethods=GET

当呼叫以GET: /my/path/param1/foo发出时,Restlet将此请求路由到第一个路由器,请求失败并返回404.我期望restlet将此请求路由到第二个路由器。我去了帖子restlet-routing-nightmare,但在我的情况下,我无法更改URI,因为我只是使用驼峰进行路由部分而且我无法控制底层服务的URI。基础服务在Jersey框架上,它们没有这些类型的URL模式的问题。

任何人都可以在restlet / camel中提出解决方案。

1 个答案:

答案 0 :(得分:0)

您需要在负载均衡器中对uris进行throwExceptionOnFailure=true,以便故障转移负载均衡器可以对异常做出反应。否则它假定该过程成功。