如何在wso2 ESB中缓存来自端点的响应

时间:2013-05-14 07:28:04

标签: wso2 wso2esb

我想在我的代理中缓存响应,当我再次点击我的代理时,它应该让我获得缓存数据。我已经尝试过使用Cache mediator但是我无法找到我的数据是否真的被缓存了。所以我基本上想要实现的是如果我在缓存中有数据然后它不应该命中端点。它应该发送响应来自缓存。期待您的回答。提前致谢

我的服务代码为:

public class GetMirrorValue {
    public String getValue(String data) throws Exception {
    System.out.println("Inside Service code");
        return data;
    }
}

我的inSequence是:

<sequence xmlns="http://ws.apache.org/ns/synapse" name="CheckCacheSeq">
   <cache scope="per-host" collector="false" hashGenerator="org.wso2.caching.digest.DOMHASHGenerator" timeout="20">
      <implementation type="memory" maxSize="100"/>
   </cache>
   <send>
      <endpoint key="DummyEP"/>
   </send>
</sequence>

我的序列是:

<outSequence xmlns="http://ws.apache.org/ns/synapse">
   <cache scope="per-host" collector="true"/>
   <send/>
</outSequence>

但每当我通过try-it工具连续点击我的代理服务时,我每次都在我的服务器System.out.println(“内部服务代码”)中从服务中获取数据但不从缓存中获取数据;得到印刷?

2 个答案:

答案 0 :(得分:1)

您可以修改后端服务(代理服务调用的端点),一旦请求被命中,就可以在服务器日志中打印内容。第一个请求应该在后端。然后在缓存期间,请求将不会转到后端服务。只有在缓存过期后才会进入后端服务。因此,查看后端服务器日志中的print,您可以观察缓存行为。

http://docs.wso2.org/wiki/display/ESB460/Sample+420%3A+Simple+Cache+Implemented+on+ESB+for+the+Actual+Service

答案 1 :(得分:0)

您可以在ESB中启用wirelogs以查看通过ESB的请求/响应。