我正在使用apache camel 2.12.2为http请求构建负载均衡器。为此,我使用camel-servlet,camel-http组件,我的路由定义如下:
<from uri="servlet:///my/path?matchOnUriPrefix=true" />
<loadBalance inheritErrorHandler="false">
<failover roundRobin="true" maximumFailoverAttempts="2">
<exception>java.io.IOException</exception>
</failover>
<to uri="http://server1:9090?bridgeEndpoint=true&throwExceptionOnFailure=false" />
<to uri="http://server2:9090?bridgeEndpoint=true&throwExceptionOnFailure=false" />
<to uri="http://server3:9090?bridgeEndpoint=true&throwExceptionOnFailure=false" />
</loadBalance>
现在我正在尝试使用Memcached实现对http请求的缓存。为此,我正在尝试使用RoutePolicy。当有缓存命中时,是否有可能打破交换并从onExchangeBegin返回,而不会达到http端点?或者有没有更好的方法来使用Memcached实现http请求的缓存?
我尝试过camel-cache组件,但我们不能使用EHCache,因为我们已经在项目中使用了Memcached。
答案 0 :(得分:4)
您可以通过设置此属性
来标记要停止的交换exchange.setProperty(Exchange.ROUTE_STOP, true);
(如果你在路线中使用它,这是&lt; stop /&gt;的工作原理)
...然后路由引擎将不会继续路由交换,并且消费者将能够尽快使用交换作为响应。