使用apache Camel缓存http请求

时间:2013-12-17 07:41:23

标签: memcached apache-camel

我正在使用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&amp;throwExceptionOnFailure=false" />
    <to uri="http://server2:9090?bridgeEndpoint=true&amp;throwExceptionOnFailure=false" />
    <to uri="http://server3:9090?bridgeEndpoint=true&amp;throwExceptionOnFailure=false" />
</loadBalance>

现在我正在尝试使用Memcached实现对http请求的缓存。为此,我正在尝试使用RoutePolicy。当有缓存命中时,是否有可能打破交换并从onExchangeBegin返回,而不会达到http端点?或者有没有更好的方法来使用Memcached实现http请求的缓存?

我尝试过camel-cache组件,但我们不能使用EHCache,因为我们已经在项目中使用了Memcached。

1 个答案:

答案 0 :(得分:4)

您可以通过设置此属性

来标记要停止的交换
exchange.setProperty(Exchange.ROUTE_STOP, true);

(如果你在路线中使用它,这是&lt; stop /&gt;的工作原理)

...然后路由引擎将不会继续路由交换,并且消费者将能够尽快使用交换作为响应。