我正在使用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中提出解决方案。
答案 0 :(得分:0)
您需要在负载均衡器中对uris进行throwExceptionOnFailure=true
,以便故障转移负载均衡器可以对异常做出反应。否则它假定该过程成功。